|
| ||
Novicadmin 09.09.16 - 06:42 | Конфигурация: Комплексная автоматизация, редакция 1.1 (1.1.76.2)
с момента появления типовой конфигурации 1С для работы с ЕГАИС (в рознице) не получается корректно отправить акт расхождения, всё время улетает акт подтверждения, в чем может быть дело? кривые руки у пользователя или не доработка 1С? Сталкнулси ли кто еще с такой проблемой? | ||
Novicadmin 1 - 09.09.16 - 07:00 | ВЫБРАТЬ
ДокументЕГАИСТовары.ИдентификаторСтроки, ДокументЕГАИСТовары.Количество, ЕСТЬNULL(ДокументИБТовары.Количество, 0) КАК КоличествоФакт ИЗ Документ.ТТНВходящаяЕГАИС.Товары КАК ДокументЕГАИСТовары ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ДокументИБТовары ПО ДокументЕГАИСТовары.ИдентификаторСтроки = ДокументИБТовары.ИдентификаторСтроки ГДЕ ДокументИБТовары.Ссылка = &СсылкаНаДокументИБ И ДокументЕГАИСТовары.Ссылка = &СсылкаНаДокЕГАИС И ДокументЕГАИСТовары.Количество <> ЕСТЬNULL(ДокументИБТовары.Количество, 0) | ||
Novicadmin 2 - 09.09.16 - 07:00 | Это запрос который проверяет расхождения между двумя таблицами товаров | ||
Novicadmin 3 - 09.09.16 - 07:14 | сразу много "а если?", к примеру "а если пользователь удалил строку из приход.товары?" | ||
Novicadmin 4 - 09.09.16 - 07:17 | как они вообще пишут типовки!?? | ||
Novicadmin 5 - 09.09.16 - 07:26 | надо поправить ( | ||
Novicadmin 6 - 09.09.16 - 07:59 | Функция НайтиСтрокиСРасхождениями(СсылкаНаДокументИБ, ДокЕГАИС)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДокументЕГАИСТовары.ИдентификаторСтроки,
| ДокументЕГАИСТовары.Количество,
| ЕСТЬNULL(ДокументИБТовары.Количество, 0) КАК КоличествоФакт
|ИЗ
| Документ.ТТНВходящаяЕГАИС.Товары КАК ДокументЕГАИСТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Документ."+СсылкаНаДокументИБ.Метаданные().Имя+".Товары КАК ДокументИБТовары
| ПО ДокументЕГАИСТовары.ИдентификаторСтроки = ДокументИБТовары.ИдентификаторСтроки
|ГДЕ
| ДокументИБТовары.Ссылка = &СсылкаНаДокументИБ
| И ДокументЕГАИСТовары.Ссылка = &СсылкаНаДокЕГАИС
| И ДокументЕГАИСТовары.Количество <> ЕСТЬNULL(ДокументИБТовары.Количество, 0)";
Запрос.УстановитьПараметр("СсылкаНаДокументИБ", СсылкаНаДокументИБ);
Запрос.УстановитьПараметр("СсылкаНаДокЕГАИС", ДокЕГАИС);
ТаблицаСтрок = Запрос.Выполнить().Выгрузить();
Возврат ТаблицаСтрок;
КонецФункции
Функция ПерезаполнитьДокументЕГАИСПоДаннымДокументаИБ(СтрокиСРасхождениями, ДокЕГАИС)
ДокОбъект = ДокЕГАИС.ПолучитьОбъект();
Для Каждого СтрокаЕГАИС Из ДокОбъект.Товары Цикл
СтрокаРасхождений = СтрокиСРасхождениями.Найти(СтрокаЕГАИС.ИдентификаторСтроки, "ИдентификаторСтроки");
Если СтрокаРасхождений <> Неопределено Тогда
СтрокаЕГАИС.КоличествоФакт = СтрокаРасхождений.КоличествоФакт;
Иначе
СтрокаЕГАИС.КоличествоФакт = СтрокаЕГАИС.Количество;
КонецЕсли;
КонецЦикла;
Попытка
ДокОбъект.Записать();
Результат = Истина;
Исключение
Результат = Ложь;
КонецПопытки;
Возврат Результат;
КонецФункции | ||
Novicadmin 7 - 09.09.16 - 07:59 | обе эти функции надо переписывать чтобы всё заработало | ||
Novicadmin 8 - 09.09.16 - 10:22 | есть те кто их правил? )) | ||
Torquader 9 - 09.09.16 - 11:15 | А в последней версии он разве не из ТТН отдельной командой отправляется ? | ||
Novicadmin 10 - 09.09.16 - 12:19 | неа, проверил | ||
Novicadmin 11 - 09.09.16 - 12:20 | Функция НайтиСтрокиСРасхождениями(СсылкаНаДокументИБ, ДокЕГАИС) ТаблицаСтрок = новый ТаблицаЗначений; ТаблицаСтрок.Колонки.Добавить("ИдентификаторСтроки"); ТаблицаСтрок.Колонки.Добавить("Количество"); ТаблицаСтрок.Колонки.Добавить("КоличествоФакт"); ПриходыЕГАИС = Новый Запрос; ПриходыЕГАИС.Текст = "ВЫБРАТЬ | ДокументЕГАИСТовары.ИдентификаторСтроки, | ДокументЕГАИСТовары.Количество |ИЗ | Документ.ТТНВходящаяЕГАИС.Товары КАК ДокументЕГАИСТовары |ГДЕ | ДокументЕГАИСТовары.Ссылка = &СсылкаНаДокЕГАИС"; ПриходыИБ = Новый Запрос; ПриходыИБ.Текст = "ВЫБРАТЬ | ДокументИБТовары.ИдентификаторСтроки, | ДокументИБТовары.Количество |ИЗ | Документ."+СсылкаНаДокументИБ.Метаданные().Имя+".Товары КАК ДокументИБТовары |ГДЕ | ДокументИБТовары.Ссылка = &СсылкаНаДокументИБ"; ПриходыИБ.УстановитьПараметр("СсылкаНаДокументИБ", СсылкаНаДокументИБ); ПриходыЕГАИС.УстановитьПараметр("СсылкаНаДокЕГАИС", ДокЕГАИС); ТПриходыЕГАИС = ПриходыЕГАИС.Выполнить().Выгрузить(); ТПриходыИБ = ПриходыИБ.Выполнить().Выгрузить(); Для каждого стр из ТПриходыЕГАИС цикл НайтиТов = ТПриходыИБ.Найти(Стр.ИдентификаторСтроки,"ИдентификаторСтроки"); Если НайтиТов = неопределено тогда тстр = ТаблицаСтрок.Добавить(); тстр.ИдентификаторСтроки = стр.ИдентификаторСтроки; тстр.Количество = стр.Количество; тстр.КоличествоФакт = 0; иначе Если стр.Количество <> НайтиТов.Количество тогда тстр = ТаблицаСтрок.Добавить(); тстр.ИдентификаторСтроки = стр.ИдентификаторСтроки; тстр.Количество = стр.Количество; тстр.КоличествоФакт = НайтиТов.Количество; КонецЕсли; КонецЕсли; КонецЦикла; Возврат ТаблицаСтрок; КонецФункции Функция ПерезаполнитьДокументЕГАИСПоДаннымДокументаИБ(СтрокиСРасхождениями, ДокЕГАИС) ДокОбъект = ДокЕГАИС.ПолучитьОбъект(); Для Каждого СтрокаЕГАИС Из ДокОбъект.Товары Цикл СтрокаРасхождений = СтрокиСРасхождениями.Найти(СтрокаЕГАИС.ИдентификаторСтроки, "ИдентификаторСтроки"); Если СтрокаРасхождений <> Неопределено Тогда Если СтрокаРасхождений.КоличествоФакт = 0 тогда ДокОбъект.Товары.Удалить(СтрокаЕГАИС); КонецЕсли; Если СтрокаРасхождений.КоличествоФакт > 0 тогда СтрокаЕГАИС.КоличествоФакт = СтрокаРасхождений.КоличествоФакт; КонецЕсли; КонецЕсли; КонецЦикла; Попытка ДокОбъект.Записать(РежимЗаписиДокумента.Запись); Результат = Истина; Исключение Результат = Ложь; КонецПопытки; Возврат Результат; КонецФункции | ||
Novicadmin 12 - 09.09.16 - 12:20 | где то накосячил, не удоляет строки из документа, хотя вроде всё ок, даже по условию проходит и типо адляет но не удаляет | ||
Novicadmin 13 - 16.09.16 - 05:49 | Функция НайтиСтрокиСРасхождениями(СсылкаНаДокументИБ, ДокЕГАИС) ТаблицаСтрок = новый ТаблицаЗначений; ТаблицаСтрок.Колонки.Добавить("ИдентификаторСтроки"); ТаблицаСтрок.Колонки.Добавить("Количество"); ТаблицаСтрок.Колонки.Добавить("КоличествоФакт"); ПриходыЕГАИС = Новый Запрос; ПриходыЕГАИС.Текст = "ВЫБРАТЬ | ДокументЕГАИСТовары.ИдентификаторСтроки, | ДокументЕГАИСТовары.Количество |ИЗ | Документ.ТТНВходящаяЕГАИС.Товары КАК ДокументЕГАИСТовары |ГДЕ | ДокументЕГАИСТовары.Ссылка = &СсылкаНаДокЕГАИС"; ПриходыИБ = Новый Запрос; ПриходыИБ.Текст = "ВЫБРАТЬ | ДокументИБТовары.ИдентификаторСтроки, | ДокументИБТовары.Количество |ИЗ | Документ."+СсылкаНаДокументИБ.Метаданные().Имя+".Товары КАК ДокументИБТовары |ГДЕ | ДокументИБТовары.Ссылка = &СсылкаНаДокументИБ"; ПриходыИБ.УстановитьПараметр("СсылкаНаДокументИБ", СсылкаНаДокументИБ); ПриходыЕГАИС.УстановитьПараметр("СсылкаНаДокЕГАИС", ДокЕГАИС); ТПриходыЕГАИС = ПриходыЕГАИС.Выполнить().Выгрузить(); ТПриходыИБ = ПриходыИБ.Выполнить().Выгрузить(); Для каждого стр из ТПриходыЕГАИС цикл НайтиТов = ТПриходыИБ.Найти(Стр.ИдентификаторСтроки,"ИдентификаторСтроки"); Если НайтиТов = неопределено тогда тстр = ТаблицаСтрок.Добавить(); тстр.ИдентификаторСтроки = стр.ИдентификаторСтроки; тстр.Количество = стр.Количество; тстр.КоличествоФакт = 0; иначе Если стр.Количество <> НайтиТов.Количество тогда тстр = ТаблицаСтрок.Добавить(); тстр.ИдентификаторСтроки = стр.ИдентификаторСтроки; тстр.Количество = стр.Количество; тстр.КоличествоФакт = НайтиТов.Количество; КонецЕсли; КонецЕсли; КонецЦикла; Возврат ТаблицаСтрок; КонецФункции Функция ПерезаполнитьДокументЕГАИСПоДаннымДокументаИБ(СтрокиСРасхождениями, ДокЕГАИС) ДокОбъект = ДокЕГАИС.ПолучитьОбъект(); Для Каждого СтрокаЕГАИС Из ДокОбъект.Товары Цикл СтрокаРасхождений = СтрокиСРасхождениями.Найти(СтрокаЕГАИС.ИдентификаторСтроки, "ИдентификаторСтроки"); Если СтрокаРасхождений <> Неопределено Тогда Если СтрокаРасхождений.КоличествоФакт = 0 тогда ДокОбъект.Товары.Удалить(СтрокаЕГАИС); продолжить; КонецЕсли; Если СтрокаРасхождений.КоличествоФакт > 0 тогда СтрокаЕГАИС.КоличествоФакт = СтрокаРасхождений.КоличествоФакт; СтрокаЕГАИС.Сумма = СтрокаЕГАИС.КоличествоФакт * СтрокаЕГАИС.Цена; КонецЕсли; иначе СтрокаЕГАИС.КоличествоФакт = СтрокаЕГАИС.Количество; КонецЕсли; КонецЦикла; ДокОбъект.СуммаДокумента = ДокОбъект.Товары.Итог("Сумма"); Попытка ДокОбъект.Записать(РежимЗаписиДокумента.Запись); Результат = Истина; Исключение Результат = Ложь; КонецПопытки; Возврат Результат; КонецФункции | ||
Novicadmin 14 - 16.09.16 - 05:49 | вот так будет правильнее, работает |
|
Список тем форума
|