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