// проверяем на только входящие платежи Если Объект.НастройкаИмпортТолькоВходящихПлатежей Тогда Если Число(Строка.Расход) > 0 Тогда Продолжить; КонецЕсли; КонецЕсли;
НоваяСтрока = тзПлатежи.Добавить();
// перекодировка Если ПерекодировкаИмпорта Тогда Строка.Контрагент = ЗаменитьСимволы(Строка.Контрагент); Строка.Содержание = ЗаменитьСимволы(Строка.Содержание); КонецЕсли;
// 4.1. Определение контрагента // Ищем по коду ЕДРПОУ (в дальнейшем ОКПО): ВыборкаПоОКПО = НайтиПоОКПО(Строка.ОКПО, Строка.Контрагент); НайденКонтрагент = Ложь; Если ВыборкаПоОКПО.Следующий() Тогда //есть хоть один
// в зависимости от флага // "АвтоСозданиеКонтрагента" создаем новые элементы справочника Контрагенты
Если Объект.НастройкаАвтоСозданиеКонтрагента Тогда
ПР = ?(Строка.Приход = 0, "Р", "П");
Реквизиты = Новый Структура; Реквизиты.Вставить("Наименование", Строка.Контрагент); Реквизиты.Вставить("ПР", ПР); //Приход ("П") или расход ("Р") Реквизиты.Вставить("ОКПО", Строка.ОКПО); Реквизиты.Вставить("РСчет", Строка.РСчет); Реквизиты.Вставить("МФО", Строка.МФО);
//Создаём нового контрагента в справочнике Контрагент = СоздатьСпрКонтрагент(Реквизиты); Иначе // ПустаяСсылка Контрагент = Справочники.Контрагенты.ПустаяСсылка(); КонецЕсли;
КонецЕсли;
НоваяСтрока.Контрагент = Контрагент;
// 4.2. Определение сделки, заказа, договора. ПриходРасход = ""; Если НоваяСтрока.Приход > 0 Тогда ПриходРасход = "Приход"; Если Объект.Конфигурация = "УТ" Тогда ВидДокумента = "ПоступлениеБезналичныхДенежныхСредств"; ИначеЕсли Объект.Конфигурация = "БУ" Тогда ВидДокумента = "ПоступлениеНаРасчетныйСчет"; КонецЕсли;
ИначеЕсли НоваяСтрока.Расход > 0 Тогда ПриходРасход = "Расход"; Если Объект.Конфигурация = "УТ" Тогда ВидДокумента = "СписаниеБезналичныхДенежныхСредств"; ИначеЕсли Объект.Конфигурация = "БУ" Тогда ВидДокумента = "СписаниеСРасчетногоСчета"; КонецЕсли;
// по счету ищем банковский счет для контрагента. Если нет - создать. НоваяСтрока.СчетКонтрагента = НайтиСчетКонтрагента(Строка.РСчет, Контрагент); Если НЕ ЗначениеЗаполнено(НоваяСтрока.СчетКонтрагента) Тогда НоваяСтрока.СчетКонтрагента = ДобавитьСчетКонтрагента(Контрагент, Строка.РСчет, Строка.МФО); КонецЕсли;
// определяем статус Если НЕ ЗначениеЗаполнено(НоваяСтрока.Контрагент) Тогда НоваяСтрока.Статус = СтатусыСтрокИмпорта.НеобходимоЗаполнитьРеквизиты; Иначе НоваяСтрока.Статус = СтатусыСтрокИмпорта.ГотовКЗаписи; КонецЕсли;
КонецЦикла;
// Ищем среди неоплаченных ППИсх с совпадением суммы и номера ПП (то есть те, которые вернулись из банка и их необходимо обновить). // Для таких проставим статус СуществующийПлатежНеобходимоОплатить МассивУдаляемыхСтрок = Новый Массив;
Для Каждого СтрокаИмпорт Из Объект.тчИмпорт Цикл
Если СтрокаИмпорт.Оплачен Или СтрокаИмпорт.ВидДокумента <> "СписаниеБезналичныхДенежныхСредств" Тогда Продолжить; КонецЕсли;
Для Каждого Строка Из тзПлатежи Цикл Если Строка.Контрагент = СтрокаИмпорт.Контрагент Тогда
Если (Строка.Расход > 0) И (СтрокаИмпорт.Расход > 0) И (Строка.Расход = СтрокаИмпорт.Расход ) Тогда // номер ПП есть в файле и совпадает с текущим Если ЗначениеЗаполнено(Строка.НомерПП) И Строка.НомерПП <> СтрокаИмпорт.НомерПП Тогда Продолжить; КонецЕсли;
Если МассивУдаляемыхСтрок.Найти(Строка) = Неопределено Тогда МассивУдаляемыхСтрок.Добавить(Строка); КонецЕсли;
Для Каждого ЭлементМассива Из МассивУдаляемыхСтрок Цикл тзПлатежи.Удалить(ЭлементМассива); КонецЦикла;
// 4.5 Удаляем с тзПлатежи, те которые уже есть в тчИмпорт // (совпадение по Контрагенту и приходу-расходу)
МассивУдаляемыхСтрок = Новый Массив;
Для Каждого Строка Из тзПлатежи Цикл ПервоеСовпадениеПриход = Истина; ПервоеСовпадениеРасход = Истина; Для Каждого СтрокаИмпорт Из Объект.тчИмпорт Цикл
СтрокаСравнения = "Контрагент"; Если (Строка[СтрокаСравнения] = СтрокаИмпорт[СтрокаСравнения]) Тогда // приход-расход Если (Строка.Приход > 0) И (СтрокаИмпорт.Приход > 0) И (Строка.Приход = СтрокаИмпорт.Приход) Тогда // номер ПП есть в файле и совпадает с текущим Если ЗначениеЗаполнено(Строка.НомерПП) И Строка.НомерПП <> СтрокаИмпорт.НомерПП Тогда Продолжить; КонецЕсли; // совпало Если ПервоеСовпадениеПриход Тогда // эту строку из тзПлатежи удаляем МассивУдаляемыхСтрок.Добавить(Строка); ПервоеСовпадениеПриход = Ложь; КонецЕсли; КонецЕсли; Если (Строка.Расход > 0) И (СтрокаИмпорт.Расход > 0) И (Строка.Расход = СтрокаИмпорт.Расход ) Тогда // номер ПП есть в файле и совпадает с текущим Если ЗначениеЗаполнено(Строка.НомерПП) И Строка.НомерПП <> СтрокаИмпорт.НомерПП Тогда Продолжить; КонецЕсли; // совпало Если ПервоеСовпадениеРасход Тогда // эту строку из тзПлатежи удаляем МассивУдаляемыхСтрок.Добавить(Строка); ПервоеСовпадениеРасход = Ложь; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецЦикла;
Для Каждого ЭлементМассива Из МассивУдаляемыхСтрок Цикл тзПлатежи.Удалить(ЭлементМассива); КонецЦикла;
// 5. Объединяем с тчИмпорт, в которой сейчас существующие платежи. Устанавливаем статусы Для Каждого Строка Из тзПлатежи Цикл НоваяСтрока = Объект.тчИмпорт.Добавить();
//7. Удаление пустых строк ЕстьПустые = Истина; Пока ЕстьПустые цикл ЕстьПустые = Ложь; Для Каждого Сч из Объект.ТчИмпорт Цикл Если Сч.ВидДокумента = "" Тогда Объект.ТчИмпорт.Удалить(Сч); ЕстьПустые = Истина; КонецЕсли; КонецЦикла; КонецЦикла;
КонецФункции
на локальной версии все ок. на сервере ошибка Итератор не определен. вот сюда кидает( Для Каждого Строка Из тзВыписка Цикл) поправьте где ошибка.
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9
Ошибка означает, что тзВыписка - не коллекция, не объект с элементами. Предполагаю, ошибка где-то в попытке, и в тзВыписка функция возвращает Неопределено. Если вы говорите, что на сервере, где работает Сервер 1с:Предприятия, установлен Excel, то, возможно, какой-то из используемых вами Excel-методов выдает ошибку.
Допрацьовую: - "Бухгалтерія для України 2.1"; - "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!