8.х Помогите модифицировать отчет.

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Nigelist, 11 июн 2012.

  1. TopicStarter Overlay
    Nigelist
    Offline

    Nigelist Опытный в 1С

    Регистрация:
    18 янв 2011
    Сообщения:
    130
    Симпатии:
    0
    Баллы:
    26
    В наличии конфигурация "Управление торговлей для Казахстана" версия 2.2. В документ "Реализация товаров и услуг" добавлен новый реквизит "Экспедитор", значение подбирается из справочника физические лица. Надо на основании отчета "Ведомость по взаиморасчетам с контрагентами" сделать другой отчет "Ведомость по взаиморасчетам с контрагентами по экспедиторам", в котором данные будут группироваться сначала по экспедиторам. Подскажите как лучше сделать?

    Посмотреть вложение 11329

    Вложения:

  2. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    при формировании (сборе) данных для отчета добавить группировку по экспедиторам, модифицировать макет...
  3. TopicStarter Overlay
    Nigelist
    Offline

    Nigelist Опытный в 1С

    Регистрация:
    18 янв 2011
    Сообщения:
    130
    Симпатии:
    0
    Баллы:
    26
    Я в сомнениях, откуда брать данные для выборки? Сразу из документов? Возможно ли делать такую выборку?

    А вообще хочу чтобы данные из реквизита "Экспедитор" добавлялись в регистр накопления "ВзаиморасчетыСКонтрагентами" и уже потом делать выборку по этому реквизиту. Но теперь не знаю как добавлять данные реквизита документа в регистр накопления. Ведь реквизит не справочник. Указать справочник из которого идет подборка в реквизит "Экспедитор"? Там ведь вообще процедуры движения по вышеуказанному регистру, формируются не через конструктор движений. Это ещё сложновато для меня. И вообще будет ли так правильно.
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Проще конечно добавить еще одно измерение в РН Взаиморасчеты, но тогда придется перепроводить существующие документы, плюс проблемы при обновлении. А в чем сложность выдергивать Экспедитора из документа ? Дольше конечно будет отбирать, чем из РН, но зато без модификации.
  5. TopicStarter Overlay
    Nigelist
    Offline

    Nigelist Опытный в 1С

    Регистрация:
    18 янв 2011
    Сообщения:
    130
    Симпатии:
    0
    Баллы:
    26
    В том то и дело, я не понимаю как? Как указать в реквизите регистра накопления как источник данных другой реквизит? Или указать справочник из которого подбирается "Экспедитор"?
  6. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Как это так? Разве нельзя в свойствах реквизита указать тип его данных ????
  7. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    ну вообще про регистр вам Алекс написал, про тип данных... а какой тип данных у Экспедитора в документе? по идее такой же и в РН. Как они могут быть разными? Добавить его в движения не сложно - зайдите в соответствующую процедуру и по аналогии с другими полями добавьте ваше.
  8. TopicStarter Overlay
    Nigelist
    Offline

    Nigelist Опытный в 1С

    Регистрация:
    18 янв 2011
    Сообщения:
    130
    Симпатии:
    0
    Баллы:
    26
    Реквизит Экспедитор подбирается из справочника ФизЛица. Получается в регистр накопления надо указать тот же справочник? И как я уже писал, процедура движений сформирована не через конструктор движений. Поэтому пока и не могу разобраться в как добавить новое движение в процедуру.
  9. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Да, нужно указывать тот же справочник.
    А причем тут конструктор движений и запись движений? Разве нельзя зайти в обработку проведения и подставить всего одну строчку кода ?
  10. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    если не получается, то приведите код процедуры сюда, поправим... (Обработка Проведения)
  11. TopicStarter Overlay
    Nigelist
    Offline

    Nigelist Опытный в 1С

    Регистрация:
    18 янв 2011
    Сообщения:
    130
    Симпатии:
    0
    Баллы:
    26
    Вот...

    Процедура ОбработкаПроведения
    Код:
    Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    Перем Заголовок, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоУслугам, ТаблицаПоТаре, ТаблицаПоОС;
    Перем ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам;
    ПодготовитьСтруктуруШапкиДокумента(Заголовок, СтруктураШапкиДокумента, РежимПроведения);
    // Проверка ручной корректировки
    Если ОбщегоНазначения.РучнаяКорректировкаОбработкаПроведения(РучнаяКорректировка, Отказ, Заголовок, ЭтотОбъект) Тогда
    Возврат
    КонецЕсли;
    //Проверяем заполнение табличных частей
    ОбщегоНазначения.ПроверитьЗаполнениеТабличныхЧастейДокумента(ЭтотОбъект);
    // Проверим правильность заполнения шапки документа
    ПроверитьЗаполнениеШапки(СтруктураШапкиДокумента, Отказ, Заголовок);
    Если мВестиРегламентированныйУчетПоНДС = Неопределено Тогда
    мВестиРегламентированныйУчетПоНДС = ПроцедурыНалоговогоУчета.ПолучитьПризнакПлательщикаРегламентированогоУчетаНДС(СтруктураШапкиДокумента.Организация, СтруктураШапкиДокумента.Дата, );
    КонецЕсли;
    Если мВестиРегламентированныйУчетПоАкцизу = Неопределено Тогда
    мВестиРегламентированныйУчетПоАкцизу = ПроцедурыНалоговогоУчета.ПолучитьПризнакПлательщикаРегламентированогоУчетаПоАкцизу(СтруктураШапкиДокумента.Организация, СтруктураШапкиДокумента.Дата, );
    КонецЕсли;
    // Проверим допустимость для пользователя цен документа
    УправлениеПользователями.ПроверитьДопустимостьЦенОтпуска(ЭтотОбъект, "Товары", Отказ);
    УправлениеПользователями.ПроверитьДопустимостьЦенОтпуска(ЭтотОбъект, "Услуги", Отказ);
    ПодготовитьТаблицыДокумента(СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоУслугам, ТаблицаПоТаре, ТаблицаПоОС);
    ПроводитьПоВзаиморасчетам = (СтруктураШапкиДокумента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем)
    Или (СтруктураШапкиДокумента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.Прочее);
    мСтруктураПараметровВзаиморасчетов.Вставить("ПроводитьПоВзаиморасчетам", ПроводитьПоВзаиморасчетам);
    СтруктураПодготовленныхТаблиц = Новый Структура("Товары, Услуги, ОС", ТаблицаПоТоварам, ТаблицаПоУслугам,ТаблицаПоОС);
    мСтруктураПараметровВзаиморасчетов.Вставить("СтруктураПодготовленныхТаблиц", СтруктураПодготовленныхТаблиц);
    УправлениеВзаиморасчетами.ПодготовитьТаблицыДляПроведенияПоВзаиморасчетам(ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам,
    ЭтотОбъект, мСтруктураПараметровВзаиморасчетов, СтруктураШапкиДокумента,
    Отказ, Заголовок);
    // Проверить заполнение ТЧ.
    ПроверитьЗаполнениеТабличнойЧастиТовары(ТаблицаПоТоварам,	  СтруктураШапкиДокумента, Отказ, Заголовок);
    ПроверитьЗаполнениеТабличнойЧастиУслуги(ТаблицаПоУслугам,	  СтруктураШапкиДокумента, Отказ, Заголовок);
    ПроверитьЗаполнениеТабличнойЧастиВозвратнаяТара(ТаблицаПоТаре, СтруктураШапкиДокумента, Отказ, Заголовок);
    ПроверитьЗаполнениеТабличнойЧастиОС(ТаблицаПоОС,   СтруктураШапкиДокумента, Отказ, Заголовок);
    // Проверить заполнение ТЧ "Состав набора".
    СтруктураПолей = Новый Структура;
    СтруктураПолей.Вставить("Номенклатура");
    СтруктураПолей.Вставить("Количество");
    СтруктураПолей.Вставить("Цена");
    ОбщегоНазначения.ПроверитьЗаполнениеТабличнойЧасти(ЭтотОбъект, "СоставНабора", СтруктураПолей, Отказ, Заголовок);
    //Проверим на возможность проведения в БУ
    Если ОтражатьВБухгалтерскомУчете Тогда
    ОбщегоНазначения.ПроверкаВозможностиПроведенияВ_БУ(ДоговорКонтрагента, ВалютаДокумента,
    ОтражатьВБухгалтерскомУчете,  мВалютаРегламентированногоУчета,
    Ложь, Отказ, Заголовок, "", СтруктураШапкиДокумента.ВалютаВзаиморасчетов);
    КонецЕсли;
    Если ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером И РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
    УправлениеВзаиморасчетами.КонтрольСуммыЗадолженностиПоОтгрузкеКомиссионеров(ЭтотОбъект, СтруктураШапкиДокумента, Отказ, Заголовок);
    КонецЕсли;
    // Движения по документу
    Если Не Отказ Тогда
    // Подготовим таблицу скидок для проведения.
    ТаблицаПоСкидкам = ПодготовитьТаблицуСкидок(ТаблицаПоТоварам, ТаблицаПоУслугам, ТаблицаПоОС, СтруктураШапкиДокумента);
    ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента, ТаблицаПоТоварам, ТаблицаПоСкидкам, ТаблицаПоТаре,
    ТаблицаПоУслугам, ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам, ТаблицаПоОС, Отказ, Заголовок);
    КонецЕсли;
    Если Не Отказ Тогда
    УчетНДСИАкциза.СинхронизацияПризнакаПроведенияУСчетаФактуры(Ссылка, Отказ, Истина, "СчетФактураВыданный");
    КонецЕсли
    КонецПроцедуры

    Может пригодится.

    Процедура ДвиженияПоРегистрам
    Процедура ДвиженияПоРегистрам(РежимПроведения, СтруктураШапкиДокумента,
    ТаблицаПоТоварам, ТаблицаПоСкидкам, ТаблицаПоТаре, ТаблицаПоУслугам, ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам, ТаблицаПоОС,Отказ, Заголовок)

    ТаблицаПоКомплектам = УправлениеЗапасами.СформироватьТаблицуКомплектующих(ТаблицаПоТоварам, ЭтотОбъект);

    ДвиженияПоРегистрамУпр(РежимПроведения, СтруктураШапкиДокумента,
    ТаблицаПоТоварам, ТаблицаПоКомплектам, ТаблицаПоСкидкам, ТаблицаПоТаре, ТаблицаПоУслугам,
    ТаблицаПоВзаиморасчетам, ТаблицаПоРасчетам, ТаблицаПоОС,Отказ, Заголовок);

    ДвиженияПоРегиструТоварыОрганизаций(РежимПроведения, СтруктураШапкиДокумента,
    ТаблицаПоКомплектам, ТаблицаПоТаре, ТаблицаПоУслугам, Отказ, Заголовок);


    Если ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров.ПередачаСтруктурномуПодразделению Тогда
    ДвижениеПоРегиструТоварыКПолучениюСтруктурноеПодразделение(РежимПроведения, СтруктураШапкиДокумента,
    ТаблицаПоКомплектам, ТаблицаПоТаре, ТаблицаПоУслугам, Отказ, Заголовок);
    КонецЕсли;

    Если СтруктураШапкиДокумента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем
    Или СтруктураШапкиДокумента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.Прочее Тогда
    ДвиженияПоРегистрамОперативныхВзаиморасчетов(РежимПроведения, ТаблицаПоВзаиморасчетам,
    Отказ, Заголовок, СтруктураШапкиДокумента);
    КонецЕсли;

    ДвиженияПоРегиструСписанныеТовары(СтруктураШапкиДокумента, ТаблицаПоКомплектам,
    ТаблицаПоТаре, Отказ, Заголовок);


    Если Не Отказ И СтруктураШапкиДокумента.ОтражатьВБухгалтерскомУчете Тогда
    ТаблицыДокумента = Новый Структура();
    ТаблицыДокумента.Вставить("ТаблицаПоТоварам", ТаблицаПоТоварам);
    ТаблицыДокумента.Вставить("ТаблицаПоУслугам", ТаблицаПоУслугам);
    ТаблицыДокумента.Вставить("ТаблицаПоОС", ТаблицаПоОС);

    Если мВестиРегламентированныйУчетПоНДС Тогда
    ДвиженияРегистровПодсистемыНДС(СтруктураШапкиДокумента, ТаблицыДокумента, Отказ, Заголовок);
    КонецЕсли;
    Если мВестиРегламентированныйУчетПоАкцизу Тогда
    ДвиженияРегистровПодсистемыакциз(СтруктураШапкиДокумента, ТаблицаПоТоварам, Отказ, Заголовок);
    КонецЕсли;
    КонецЕсли;

    Если ТаблицаПоКомплектам.Количество() + ТаблицаПоТаре.Количество() >0 тогда

    // Зарегистрируем в последовательности УУ
    Если ОтражатьВУправленческомУчете Тогда
    ЗаписьРегистрации = ПринадлежностьПоследовательностям.ПартионныйУчет.Добавить();
    ЗаписьРегистрации.Период = Дата;
    КонецЕсли;
    КонецЕсли;

    // Проводить по партиям сразу нужно если установлен параметр
    // учетной политики СписыватьПартииПриПроведенииДокументов
    ПараметрыПартионногоУчета = глЗначениеПеременной("ПараметрыПартионногоУчета");

    Если Не ПараметрыПартионногоУчета.СписыватьПартииПриПроведенииДокументов И РежимПроведения = РежимПроведенияДокумента.Неоперативный Тогда
    УправлениеЗапасамиПартионныйУчет.СдвигГраницыПоследовательностиПартионногоУчетаНазад(Дата, Ссылка, Организация);
    КонецЕсли;

    УправлениеЗапасамиПартионныйУчет.ДвижениеПартийТоваров(Ссылка, Движения.СписанныеТовары.Выгрузить());


    КонецПроцедуры
  12. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Не очень корректный подход. Если вы добавляете новые записи в регистр, то и остальные документы, двигающие эти данные должны их заполнять.
    А у вас одному и тому же контрагенту могут соответствовать разные экспедиторы?
  13. TopicStarter Overlay
    Nigelist
    Offline

    Nigelist Опытный в 1С

    Регистрация:
    18 янв 2011
    Сообщения:
    130
    Симпатии:
    0
    Баллы:
    26
    Тогда делать выборку из списка документов?
    Экспедиторы никак не связаны с контрагентами. Да ещё в добавок к этому никак не пойму принципы формирования движений в регистре. Вообще темный лес.
  14. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    А как у вас договоры взаиморасчетов ведутся? Если по документам расчетов, то я могу вам предложить вариант.

Поделиться этой страницей