Имя: Пароль:
1C
1С v8
Конвертация данных. Перенос проводок (движений документов)
,
0 razbiralshik
 
06.12.17
12:47
Переношу проводки с документа1 (Самописный) базы источника в документ2 (ОперацияУпр) базы приемника.
Проводки переносятся 1 к 1.
На каждую строку табличной части документа1, формируется 3 проводки.
Создано ПВД. ПКО. ПКС. Для проводок источник Хозрастченый приемник Управленческий.
Вот по новому требованию, нужно чтобы записывалось не 3 проводки на кажду строку, а 2.
Причем вторую строку нужно немного модифицировать, что у меня поулчилось легко, а вот как при переносе удалить ненужню строку для каждой тройки проводок я не знаю.
В ПКО - ПослеЗагрузки писал:
Проводки = РегистрыБухгалтерии.Управленческий.СоздатьНаборЗаписей();
Проводки.Отбор.Регистратор.Установить(Объект.Ссылка);
Проводки.Прочитать();
Для Каждого Стр Из Проводки Цикл
    Если Стр.СчетДт = ПланыСчетов.Управленческий.ПрочиеРасчетыСРазнымиДебиторамиИКредиторами Тогда
        Проводки.Удалить(Стр);
        Сообщить(Объект);
        Сообщить(Объект.Ссылка);
        Сообщить(ПланыСчетов.Управленческий.ПрочиеРасчетыСРазнымиДебиторамиИКредиторами);
        Сообщить(Стр.СчетДт);
    КонецЕсли;
КонецЦикла;
Проводки.Записать();

Но не срабатывает почемуто, хотя отладчиком прошелся, лишняя проводка убирается, но в 1С все равно три проводки остается.
1 Skylark
 
06.12.17
12:53
(0) Попробуй радикальный метод - в цикле проверки проводок нужные проводки пиши в таблицу, потом весь набор очищай, записывай и потом добавляй из таблицы новые.
2 Ёпрст
 
06.12.17
12:57
(0) проще надо делать - на этапе выгрузки удалять лишнюю проводку.
3 razbiralshik
 
06.12.17
13:00
(1) это конечна гиморно.
(2) ну а какая разница где ты ее удалишь здесь или там?
4 Ёпрст
 
06.12.17
13:01
(3) большая.
1. скорость
2. меньше файл передачи
3. ПослеЗагрузки может не срабатывать вообще (зависит от флагов)
5 razbiralshik
 
06.12.17
13:06
(4) зато туча нового кода
6 Ц_У
 
06.12.17
13:08
(0) "каждый из" знает что его удалили?
7 Ёпрст
 
06.12.17
13:09
(5) какого туча кода ?
8 razbiralshik
 
06.12.17
13:18
(7) ну я хз тогда как ты собрался обходить при выгрузке все движения документа и удалять оттуда лишние проводки...
9 Ёпрст
 
06.12.17
13:21
(8) вообще не собираюсь ничего удалять и обходить
просто поставить условие в свойстве ПКГС
10 Ёпрст
 
06.12.17
13:22
и отказ = истина
11 Ёпрст
 
06.12.17
13:26
точнее, в ПКГС в Перед Выгрузкой написать
Если ОбъектКоллекции.СчетДт = ПланыСчетов.Управленческий.ПрочиеРасчетыСРазнымиДебиторамиИКредиторами Тогда
Отказ = Истина;
КонецЕсли;

и усё.
12 razbiralshik
 
06.12.17
13:34
(11) все гениальное просто... ща затестим
13 razbiralshik
 
06.12.17
13:41
чето не прокатило...

Ошибка в обработчике события ПередВыгрузкой (объекта коллекции)

Ошибка при выгрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML(7981)}: Ошибка в обработчике события ПередВыгрузкой (объекта коллекции)
14 Marik1274
 
06.12.17
14:03
Формируй необходимые проводки (любые) в ПКГС (Группа) Хозрасчетный и пиши их в КоллекцияОбъектов.
Пример работающего кода:

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
                       |    НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка,
                       |    НоменклатураДополнительныеРеквизиты.Значение КАК Значение
                       |ПОМЕСТИТЬ ВидНоменклатуры
                       |ИЗ
                       |    Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
                       |ГДЕ
                       |    НоменклатураДополнительныеРеквизиты.Свойство = &Свойство
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    СтруктураПредприятияДополнительныеРеквизиты.Ссылка,
                       |    СтруктураПредприятияДополнительныеРеквизиты.Значение,
                       |    СтруктураПредприятияДополнительныеРеквизиты.Значение.Наименование КАК Наименование
                       |ПОМЕСТИТЬ ДопРеквПроект
                       |ИЗ
                       |    Справочник.СтруктураПредприятия.ДополнительныеРеквизиты КАК СтруктураПредприятияДополнительныеРеквизиты
                       |ГДЕ
                       |    СтруктураПредприятияДополнительныеРеквизиты.Свойство = &СвойствоПроект
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    ВЫБОР
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство)
                       |            ТОГДА ""Подразделения""
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВыручкаНеЕНВД)
                       |            ТОГДА ""Номенклатурные группы""
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД)
                       |            ТОГДА ""Номенклатурные группы""
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Продажи_НДС)
                       |            ТОГДА ""Номенклатурные группы""
                       |        ИНАЧЕ ХозрасчетныйДвиженияССубконто.ВидСубконтоДт1.Наименование
                       |    КОНЕЦ КАК ВидСубконтоДт1,
                       |    ВЫБОР
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство)
                       |            ТОГДА ХозрасчетныйДвиженияССубконто.ПодразделениеДт
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВыручкаНеЕНВД)
                       |            ТОГДА ХозрасчетныйДвиженияССубконто.НаправлениеДеятельностиДт
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД)
                       |            ТОГДА ХозрасчетныйДвиженияССубконто.НаправлениеДеятельностиДт
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Продажи_НДС)
                       |            ТОГДА ХозрасчетныйДвиженияССубконто.НаправлениеДеятельностиДт
                       |        КОГДА ХозрасчетныйДвиженияССубконто.ВидСубконтоДт1.Наименование = ""Номенклатура""
                       |            ТОГДА ВЫБОР
                       |                    КОГДА ВидНоменклатуры.Значение = ""Товар""
                       |                        ТОГДА ЗНАЧЕНИЕ(Справочник.Номенклатура.Товар)
                       |                    КОГДА ВидНоменклатуры.Значение = ""Услуга""
                       |                        ТОГДА ЗНАЧЕНИЕ(Справочник.Номенклатура.Услуга)
                       |                    КОГДА ВидНоменклатуры.Значение = ""Автомобили""
                       |                        ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт1
                       |                    ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Номенклатура.Товар)
                       |                КОНЕЦ
                       |        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоДт1
                       |    КОНЕЦ КАК СубконтоДт1,
                       |    ВЫБОР
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство)
                       |            ТОГДА ""Номенклатурные группы""
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ИздержкиОбращения)
                       |            ТОГДА ""Подразделения""
                       |        ИНАЧЕ ХозрасчетныйДвиженияССубконто.ВидСубконтоДт2.Наименование
                       |    КОНЕЦ КАК ВидСубконтоДт2,
                       |    ВЫБОР
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство)
                       |            ТОГДА ХозрасчетныйДвиженияССубконто.НаправлениеДеятельностиДт
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ИздержкиОбращения)
                       |            ТОГДА ХозрасчетныйДвиженияССубконто.ПодразделениеДт
                       |        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоДт2
                       |    КОНЕЦ КАК СубконтоДт2,
                       |    ВЫБОР
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВыручкаНеЕНВД)
                       |            ТОГДА """"
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД)
                       |            ТОГДА """"
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ИздержкиОбращения)
                       |            ТОГДА ""Номенклатурные группы""
                       |        ИНАЧЕ ХозрасчетныйДвиженияССубконто.ВидСубконтоДт3.Наименование
                       |    КОНЕЦ КАК ВидСубконтоДт3,
                       |    ВЫБОР
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВыручкаНеЕНВД)
                       |            ТОГДА """"
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД)
                       |            ТОГДА """"
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ИздержкиОбращения)
                       |            ТОГДА ВЫБОР
                       |                    КОГДА ДопРеквПроект.Наименование = ""Магазин""
                       |                        ТОГДА ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПродажаЗапчастей)
                       |                    ИНАЧЕ ЗНАЧЕНИЕ(Справочник.НаправленияДеятельности.ПродажаАвтомобилей)
                       |                КОНЕЦ
                       |        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоДт3
                       |    КОНЕЦ КАК СубконтоДт3,
                       |    ВЫБОР
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство)
                       |            ТОГДА ""Подразделения""
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВыручкаНеЕНВД)
                       |            ТОГДА ""Номенклатурные группы""
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД)
                       |            ТОГДА ""Номенклатурные группы""
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Продажи_НДС)
                       |            ТОГДА ""Номенклатурные группы""
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицами)
                       |            ТОГДА ""Работники организации""
                       |        ИНАЧЕ ХозрасчетныйДвиженияССубконто.ВидСубконтоКт1.Наименование
                       |    КОНЕЦ КАК ВидСубконтоКт1,
                       |    ВЫБОР
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство)
                       |            ТОГДА ХозрасчетныйДвиженияССубконто.ПодразделениеКт
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВыручкаНеЕНВД)
                       |            ТОГДА ХозрасчетныйДвиженияССубконто.НаправлениеДеятельностиКт
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД)
                       |            ТОГДА ХозрасчетныйДвиженияССубконто.НаправлениеДеятельностиКт
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Продажи_НДС)
                       |            ТОГДА ХозрасчетныйДвиженияССубконто.НаправлениеДеятельностиКт
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПодотчетнымиЛицами)
                       |            ТОГДА &ФизЛицо
                       |        КОГДА ХозрасчетныйДвиженияССубконто.ВидСубконтоКт1.Наименование = ""Номенклатура""
                       |            ТОГДА ВЫБОР
                       |                    КОГДА ВидНоменклатуры.Значение = ""Товар""
                       |                        ТОГДА ЗНАЧЕНИЕ(Справочник.Номенклатура.Товар)
                       |                    КОГДА ВидНоменклатуры.Значение = ""Услуга""
                       |                        ТОГДА ЗНАЧЕНИЕ(Справочник.Номенклатура.Услуга)
                       |                    КОГДА ВидНоменклатуры.Значение = ""Автомобили""
                       |                        ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1
                       |                    ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Номенклатура.Товар)
                       |                КОНЕЦ
                       |        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоКт1
                       |    КОНЕЦ КАК СубконтоКт1,
                       |    ВЫБОР
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство)
                       |            ТОГДА ""Номенклатурные группы""
                       |        ИНАЧЕ ХозрасчетныйДвиженияССубконто.ВидСубконтоКт2.Наименование
                       |    КОНЕЦ КАК ВидСубконтоКт2,
                       |    ВЫБОР
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновноеПроизводство)
                       |            ТОГДА ХозрасчетныйДвиженияССубконто.НаправлениеДеятельностиКт
                       |        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоКт2
                       |    КОНЕЦ КАК СубконтоКт2,
                       |    ВЫБОР
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВыручкаНеЕНВД)
                       |            ТОГДА """"
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД)
                       |            ТОГДА """"
                       |        ИНАЧЕ ХозрасчетныйДвиженияССубконто.ВидСубконтоКт3.Наименование
                       |    КОНЕЦ КАК ВидСубконтоКт3,
                       |    ВЫБОР
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВыручкаНеЕНВД)
                       |            ТОГДА """"
                       |        КОГДА ХозрасчетныйДвиженияССубконто.СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СебестоимостьПродажНеЕНВД)
                       |            ТОГДА """"
                       |        ИНАЧЕ ХозрасчетныйДвиженияССубконто.СубконтоКт3
                       |    КОНЕЦ КАК СубконтоКт3,
                       |    ЕСТЬNULL(ХозрасчетныйДвиженияССубконто.ВалютаДт, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК ВалютаДт,
                       |    ЕСТЬNULL(ХозрасчетныйДвиженияССубконто.ВалютаКт, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК ВалютаКт,
                       |    ХозрасчетныйДвиженияССубконто.Организация КАК Организация,
                       |    """" КАК ВидРегламентнойОперации,
                       |    ХозрасчетныйДвиженияССубконто.Период КАК ДатаЗаписи,
                       |    ЛОЖЬ КАК НДСПродукции,
                       |    """" КАК НомерЖурнала,
                       |    ЕСТЬNULL(ХозрасчетныйДвиженияССубконто.ПодразделениеДт, ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)) КАК Подразделение,
                       |    ХозрасчетныйДвиженияССубконто.Содержание КАК Содержание,
                       |    ЛОЖЬ КАК СписаниеПартий,
                       |    ЕСТЬNULL(ХозрасчетныйДвиженияССубконто.ВалютнаяСуммаДт, 0) КАК ВалютнаяСуммаДт,
                       |    ЕСТЬNULL(ХозрасчетныйДвиженияССубконто.ВалютнаяСуммаКт, 0) КАК ВалютнаяСуммаКт,
                       |    0 КАК КоличествоДт,
                       |    0 КАК КоличествоКт,
                       |    ХозрасчетныйДвиженияССубконто.Сумма КАК Сумма,
                       |    ХозрасчетныйДвиженияССубконто.Активность КАК Активность,
                       |    ХозрасчетныйДвиженияССубконто.Период КАК Период,
                       |    &Регистратор КАК Регистратор,
                       |    ХозрасчетныйДвиженияССубконто.СчетДт КАК СчетДт,
                       |    ХозрасчетныйДвиженияССубконто.СчетКт КАК СчетКт
                       |ИЗ
                       |    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
                       |            &Дата,
                       |            &Дата,
                       |            Регистратор = &Регистратор
                       |                И СчетДт.Забалансовый = ЛОЖЬ
                       |                И СчетКт.Забалансовый = ЛОЖЬ,
                       |            ,
                       |            ) КАК ХозрасчетныйДвиженияССубконто
                       |        ЛЕВОЕ СОЕДИНЕНИЕ ВидНоменклатуры КАК ВидНоменклатуры
                       |        ПО ХозрасчетныйДвиженияССубконто.СубконтоДт1 = ВидНоменклатуры.Ссылка
                       |        ЛЕВОЕ СОЕДИНЕНИЕ ДопРеквПроект КАК ДопРеквПроект
                       |        ПО ХозрасчетныйДвиженияССубконто.ПодразделениеДт = ДопРеквПроект.Ссылка";



        Свойство         = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ВидНоменклатурыИзТорговли");
        СвойствоПроект    = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Основной проект");
        
        Запрос.УстановитьПараметр("Регистратор", Источник);
        Запрос.УстановитьПараметр("Дата", Источник.Дата);
        Запрос.УстановитьПараметр("Свойство",Свойство);
        Запрос.УстановитьПараметр("СвойствоПроект",СвойствоПроект);
        Запрос.УстановитьПараметр("ФизЛицо",Источник.ПодотчетноеЛицо);
                    
Результат = Запрос.Выполнить().Выгрузить();
Результат.Колонки.Добавить("СубконтоДт");
Результат.Колонки.Добавить("СубконтоКт");
        
Для Каждого СтрокаТЧ ИЗ Результат Цикл
            
СубконтоДт = Новый Соответствие;
СубконтоДт.Вставить(Новый Структура("Наименование", СтрокаТЧ.ВидСубконтоДт1),СтрокаТЧ.СубконтоДт1);
            СубконтоДт.Вставить(Новый Структура("Наименование", СтрокаТЧ.ВидСубконтоДт2),СтрокаТЧ.СубконтоДт2);
            СубконтоДт.Вставить(Новый Структура("Наименование", СтрокаТЧ.ВидСубконтоДт3),СтрокаТЧ.СубконтоДт3);
            СтрокаТЧ.СубконтоДт = СубконтоДт;
            
            СубконтоКт = Новый Соответствие;
            СубконтоКт.Вставить(Новый Структура("Наименование", СтрокаТЧ.ВидСубконтоКт1),СтрокаТЧ.СубконтоКт1);
            СубконтоКт.Вставить(Новый Структура("Наименование", СтрокаТЧ.ВидСубконтоКт2),СтрокаТЧ.СубконтоКт2);
            СубконтоКт.Вставить(Новый Структура("Наименование", СтрокаТЧ.ВидСубконтоКт3),СтрокаТЧ.СубконтоКт3);
            СтрокаТЧ.СубконтоКт = СубконтоКт;

КонецЦикла;
        
КоллекцияОбъектов = Результат;
15 razbiralshik
 
06.12.17
14:09
Если ОбъектКоллекции.СчетДт = ПланыСчетов.Хозрасчетный.ПрочиеРасчетыСРазнымиДебиторамиИКредиторами Тогда
    Отказ = Истина;
КонецЕсли;


вот так прокатывает, мыж выгружаем, а там не упр а хозр ))

Спасибо Ёпрст!
Программист всегда исправляет последнюю ошибку.