|
Сложный вопрос на сообразительность | ☑ | ||
---|---|---|---|---|
0
Grobik
20.01.12
✎
21:30
|
табДокумента = Новый ТаблицаЗначений;
табДокумента.Очистить(); табДокумента.Колонки.Очистить(); табДокумента.Колонки.Добавить("не_выгружать",Новый ОписаниеТипов("Булево"),"Не выгружать"); табДокумента.Колонки.Добавить("номер_строки",Новый ОписаниеТипов("Число")); табДокумента.Колонки.Добавить("Карточный_счёт",Новый ОписаниеТипов("Строка")); табДокумента.Колонки.Добавить("ФИО",Новый ОписаниеТипов("Строка")); табДокумента.Колонки.Добавить("ИНН",Новый ОписаниеТипов("Строка")); табДокумента.Колонки.Добавить("Таб_N",Новый ОписаниеТипов("Строка")); табДокумента.Колонки.Добавить("сумма_квыплате",Новый ОписаниеТипов("Строка")); В котором заполнены ИНН и сумма_квыплате Есть ТЗ табЗагрузки в котором заполнено все кроме сумма_квыплате, строк в котором намного больше. Нужно одним нажатием мыши загнать в табЗагрузки сумма_квыплате из табДокумента и удалить строки в которых сумма_квыплате=0. Для выгрузки в укрсоцбанк это нужно если кому интересно. Сделать нужно сегодня а спирт несколько мешает думать. Спасибо. |
|||
1
EvgeniuXP
20.01.12
✎
21:40
|
табДокумента = Новый ТаблицаЗначений;
табДокумента.Очистить(); табДокумента.Колонки.Очистить(); Зачем это? просто: табДокумента = Новый ТаблицаЗначений; |
|||
2
DJ Anthon
20.01.12
✎
21:41
|
отличный ник!
|
|||
3
EvgeniuXP
20.01.12
✎
21:43
|
временные таблицы - соединение... фильтр и выгрузка.
или дедовским методом, найти строки, нашел, перенесь, прошел снова по циклу с нулем все выбрал строки и удалил их за раз. |
|||
4
Дикообразко
20.01.12
✎
21:44
|
такое пишется в любом состоянии
элементарно же |
|||
5
ПесняПроЗайцев
20.01.12
✎
22:23
|
(1) мож в цикле далает )
(4) я тоже так думаю. (0) или спросить у спирта или облегчиться на некоторую сумму дензнаков. |
|||
6
PVV65
21.01.12
✎
00:44
|
(0) ИНН для чего упоминается? Это фильтр?
|
|||
7
Grobik
23.01.12
✎
01:05
|
Я сисадмин по жизни. В 35 лет решил переквалифицироваться в 1Снига. Чтобы заработать на семью. Пришел без опыта работы на восьмерке и сейчас такая проблема. Гугль не помог. Везде сильно другие вопросы. Киньте пожалуйста ссылку где этот "пишется в любом состоянии" вопрос решен.
|
|||
8
rs_trade
23.01.12
✎
01:10
|
(7) очень тронуло. хочу помочь, да спирт мешает.
|
|||
9
Grobik
23.01.12
✎
01:12
|
(6) да ИНН везде один и тот же, нужно в табЗагрузки сумма_квыплате из табДокумента и удалить строки в которых сумма_квыплате=0.
(2) ник старый по пьяни созданный http://forum.ixbt.com/users.cgi?id=info:Grobik |
|||
10
Конфигуратор1с
23.01.12
✎
01:27
|
(0) так если у тебя тзшки одинаковы, почему не загрузить друг в дружку. И строки удалять не нужно будет.
|
|||
11
Grobik
23.01.12
✎
01:30
|
(10) пример пожалуйста, я не понимаю об чем речь, а надо
|
|||
12
Конфигуратор1с
23.01.12
✎
01:32
|
(11) тзшки одинаковые?
|
|||
13
Grobik
23.01.12
✎
01:59
|
(12) В смысле как? Строк разное количество. В табЗагрузки больше чем в табДокумент. Колонки подписаны одинаково. Как в (0) написано. Нужно по ИНН с загруженной выплаты зарплаты в нести в табЗагрузки загруженной из банка ведомости внести суммы и потом выгрузить в банк. Загрузить из банка табЗагрузки сделал, загрузить из 1С табДокумент сделал, выгрузить в банк текстовый докумет тоже считай готово. Только его выгружать нужно из табЗагрузки в который из табЗагрузки вставлены сумма_квыплате и удалены строки в которых сумма_квыплате=0. Я понимаю, что это как два пальца об асфальт, но я этого не учил и времени на учебу нет. Если покажете пример буду премного благодарен.
|
|||
14
Bww_
23.01.12
✎
04:23
|
Ну вот тебе некий простенький код, который под спирт понимается
//*** Для каждого строкаТД из ТабДокумента Цикл строкаТВ=ТабВыгрузки.Найти(строкаТД.ИНН,"ИНН") Если строкаТВ=Неопределено Тогда строкаТВ=ТабВыгрузки.Добавить(); //присвоил знач.полей хотя это наверное дурь если ТабВыгрузки уже содержит //все строки ИНН КонецЕсли; строкаТВ.Сумма_КВыгрузке = строкаТД.суммма_КВгрузке; КонецЦикла; //*** ТабВыгрузки.Сортировать("Сумма_КВыгрузке"); Пока ТабВыгрузки.Количество()>0 Цикл Если ТабВыгрузки.Получить(0).Сумма_КВыгрузке<=0 Тогда ТабВыгрузки.Удалить(0); КонецЕсли; КонецЦикла; |
|||
15
Alex375
23.01.12
✎
05:01
|
Ты ж зачем его в бесконечный цикл пустил? )))
|
|||
16
Bww_
23.01.12
✎
05:05
|
Ну да - лоханулся.
Ну наверное поймет |
|||
17
kosts
23.01.12
✎
06:13
|
(14) Нельзя удалять строки в таблице по которой идет цикл.
Вот так лучше
|
|||
18
Bww_
23.01.12
✎
06:33
|
Да что ты говоришь?
...ну если только масло маслом мазать. |
|||
19
Bww_
23.01.12
✎
06:34
|
Сам то хоть понимаешь чего нарисовал?
|
|||
20
kosts
23.01.12
✎
06:47
|
(19) Это работает нормально
|
|||
21
kosts
23.01.12
✎
06:58
|
Конечно (14) будет работать, но я бы не стал применять такое, т.к. как минимум нарушает сортировку.
|
|||
22
Grobik
23.01.12
✎
15:27
|
Всем спасибо за помощь!!!
Итого вышло: табДокумента.Свернуть("ИНН, не_выгружать, Карточный_счёт, ФИО, Таб_N","сумма_квыплате"); Для каждого строкаТД из табДокумента Цикл строкаТВ=табЗагрузки.Найти(строкаТД.ИНН,"ИНН"); Если строкаТВ=Неопределено Тогда //Сообщить("Сотрудник " + строкаТД.ФИО + " с ИНН " + строкаТД.ИНН + " отсутсвует в справочнике банка", СтатусСообщения.Важное); строкаТВ=табЗагрузки.Добавить(); КонецЕсли; строкаТВ.сумма_квыплате = строкаТД.сумма_квыплате; КонецЦикла; МасСтрок = Новый Массив; Для каждого Строка из табЗагрузки Цикл Если Строка.сумма_квыплате="0,00" Тогда МасСтрок.Добавить(Строка); КонецЕсли; КонецЦикла; Для каждого Строка из МасСтрок Цикл табЗагрузки.Удалить(Строка); КонецЦикла; Работает ;) |
|||
23
kosts
23.01.12
✎
17:19
|
(22)
> Строка.сумма_квыплате="0,00" Это что? |
|||
24
Grobik
23.01.12
✎
19:13
|
Это строки из табЗагрузки (выгрузка справочника из банка) которых не было в табДокумента (из ведомости перечисления з/п 1С) и соответственно они были забиты строками с 0,00. Мне удобней было во всех загрузке и выгрузке из банка суммы держать в формате стоки а не числа.
|
|||
25
Grobik
23.01.12
✎
19:15
|
Хотя это я так сразу думал, что удобней, сейчас попросили при выгрузке добавить сортировку по возрастанию, буду туда-сюда ТЗ теребить.
|
|||
26
Grobik
24.01.12
✎
12:29
|
Последнее западло вылезло
Для Каждого ТекущаяСтрока Из табЗагрузки Цикл номрЧеловекаСчет = номрЧеловекаСчет+1; суммаВыписки=суммаВыписки+ТекущаяСтрока.сумма_квыплате; ТекущаяСтрока.сумма_квыплате=Формат(ТекущаяСтрока.сумма_квыплате,"ЧДЦ=2;ЧРД='.';ЧГ=0"); Сообщить("Как есть " + ТекущаяСтрока.сумма_квыплате + " как должно быть " + Формат(ТекущаяСтрока.сумма_квыплате,"ЧДЦ=2;ЧГ=0;ЧРД='.'") + "-+- ФИО " + ТекущаяСтрока.ФИО); КонецЦикла; Текст.ЗаписатьСтроку("AMOUNT="+Формат(суммаВыписки,"ЧДЦ=2;ЧГ=0;ЧРД='.'")); Упорно выводит с пробелом после тысяч и с запятой в качестве разделителя. При этом суммуВыписки выводит Правильно! Никогда такого не встречал. Всегда "ЧДЦ=2;ЧГ=0;ЧРД='.'" как и "ЧДЦ=2;ЧГ=;ЧРД=." работало безотказно. |
|||
27
kosts
24.01.12
✎
13:45
|
Никогда не знал какие буквы за что отвечают, всегда пользуюсь конструктором.
Формат(, "ЧДЦ=2; ЧРД=.; ЧН=0; ЧГ=0") |
|||
28
Mort
24.01.12
✎
13:55
|
(26) Потому что вот это не имеет ничего общего с здравым смыслом:
ТекущаяСтрока.сумма_квыплате=Формат(ТекущаяСтрока.сумма_квыплате,"ЧДЦ=2;ЧРД='.';ЧГ=0"); За исключением случая составного типа колонки (число и строка), в чем сомневаюсь. |
|||
29
kosts
24.01.12
✎
13:55
|
кстати
>они были забиты строками с 0,00 не в этом ли проблема |
|||
30
Mort
24.01.12
✎
13:57
|
В (0) ТекущаяСтрока.сумма_квыплате имеет тип строка. Это ответ типа.
|
|||
31
Grobik
24.01.12
✎
15:12
|
(30) Спасибо. Оборжаться, но все работает.
ВЧисло = строка(ТекущаяСтрока.сумма_квыплате); н1 = Найти(ВЧисло,",")+2; ВЧисло = Лев(ВЧисло,н1); ТоЧтоНадо = Число(ВЧисло); ТекущаяСтрока.сумма_квыплате=Формат(ТоЧтоНадо,"ЧДЦ=2;ЧРД='.';ЧГ=0"); |
|||
32
Mort
24.01.12
✎
15:15
|
(31) Какой жуткий ПЦ. А сделать числом не судьба?
|
|||
33
Mort
24.01.12
✎
15:16
|
Т.е. вот эту строку:
табДокумента.Колонки.Добавить("сумма_квыплате",Новый ОписаниеТипов("Строка")); |
|||
34
Grobik
24.01.12
✎
15:35
|
тогда разборку файла из банка переделывать придется, там все колонки забиты как строковые
Для номСтр = 2 По квоСтрок Цикл стрТекста = текст.ПолучитьСтроку(номСтр)+"0,00"; масЗначСтр = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(стрТекста,разделительПолей); новСтр = табЗагрузки.Добавить(); номЗнач = 1; Для каждого зн Из масЗначСтр Цикл новСтр[номЗнач] = зн; номЗнач = номЗнач + 1; КонецЦикла; КонецЦикла; потом переделывать запрос из документа, где конечно сразу проще было числом брать, а потом и объединение. А в чем проблема такого решения? Кроме красоты. Работает долю секунды, файл формирует верного формата. |
|||
35
Grobik
24.01.12
✎
23:25
|
Завтра чтоб поржать выложу итоговый документ. Работает.
Теги добавлю для гугля (если можно), вдруг кому надо, 8 часов рабочего времени сэкономит. |
|||
36
1с-кин
25.01.12
✎
00:33
|
(31) неявное преобразование, не находите?
|
|||
37
Grobik
25.01.12
✎
00:37
|
(36) Проблемы? Я на типовых примерах не заметил.
|
|||
38
Grobik
25.01.12
✎
00:39
|
Для меня положительный результат — правильный текстовый файл для импорта в клиент-банк. Пока все похоже на хорошо.
|
|||
39
1с-кин
25.01.12
✎
00:43
|
(370 неявное преобразование в 1с ведет к ошибкам выполнения - 1с не отслеживает в этом случае типы даных, и при их несовпадении - прекращает работу.
Если все работает - оставляйте. Будете решать проблемы по мере поступления тогда ) |
|||
40
Grobik
25.01.12
✎
12:07
|
Как обещал выкладываю свой шедевр
http://depositfiles.com/files/tizmq9etb Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт МассивСтрок = Новый Массив(); Если Разделитель = " " Тогда Стр = СокрЛП(Стр); Пока Истина Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(Разделитель); Пока Истина Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = Сред(Стр,Поз+ДлинаРазделителя); КонецЦикла; КонецЕсли; КонецФункции Процедура путьКФайлуЗагрузкиНачалоВыбора(Элемент, СтандартнаяОбработка) Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.ПолноеИмяФайла = ""; Фильтр = "Comma separated file (*.csv)|*.csv"; ДиалогОткрытияФайла.Фильтр = Фильтр; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; ДиалогОткрытияФайла.Заголовок = "Выберите файл"; Если ДиалогОткрытияФайла.Выбрать() Тогда путьКФайлуЗагрузки = ДиалогОткрытияФайла.ПолноеИмяФайла; КонецЕсли; КонецПроцедуры Процедура путьКФайлуЗагрузкиОткрытие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если путьКФайлуЗагрузки = "" Тогда Возврат; КонецЕсли; Файл = Новый Файл(путьКФайлуЗагрузки); Если Файл.Существует() Тогда ЗапуститьПриложение(путьКФайлуЗагрузки); КонецЕсли; КонецПроцедуры Процедура путьКФайлуВыгрузкиНачалоВыбора(Элемент, СтандартнаяОбработка) Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.ПолноеИмяФайла = ""; Фильтр = "Текстовый документ(*.txt)|*.txt"; ДиалогОткрытияФайла.Фильтр = Фильтр; ДиалогОткрытияФайла.МножественныйВыбор = Ложь; ДиалогОткрытияФайла.Заголовок = "Выберите файл"; Если ДиалогОткрытияФайла.Выбрать() Тогда путьКФайлуВыгрузки = ДиалогОткрытияФайла.ПолноеИмяФайла; КонецЕсли; КонецПроцедуры Процедура путьКФайлуВыгрузкиОткрытие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если путьКФайлуВыгрузки = "" Тогда Возврат; КонецЕсли; Файл = Новый Файл(путьКФайлуВыгрузки); Если Файл.Существует() Тогда ЗапуститьПриложение(путьКФайлуВыгрузки); КонецЕсли; КонецПроцедуры Процедура заполнитьИзДокументаНачалоВыбора(Элемент, СтандартнаяОбработка) КонецПроцедуры Процедура заполнитьИзДокументаОткрытие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если заполнитьИзДокумента = "" Тогда Возврат; КонецЕсли; КонецПроцедуры Процедура КоманднаяПанель1Заполнить(Кнопка) Если табЗагрузки.Количество() > 0 И Вопрос("Таблица будет очищена. Вы уверены?",РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; ЗаполнитьТаблицу(); КонецПроцедуры Процедура ЗаполнитьТаблицу() разделительПолей = ";"; текст = Новый ТекстовыйДокумент; Попытка текст.Прочитать(путьКФайлуЗагрузки,КодировкаТекста.ANSI); Исключение Сообщить("Не удалось прочитать файл: " + ОписаниеОшибки(),СтатусСообщения.ОченьВажное); Возврат; КонецПопытки; табЗагрузки.Очистить(); табЗагрузки.Колонки.Очистить(); квоСтрок = текст.КоличествоСтрок(); Если Не квоСтрок > 0 Тогда Сообщить("Файл пустой",СтатусСообщения.Внимание); Возврат; КонецЕсли; стрТекста = текст.ПолучитьСтроку(1); масЗначСтр = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(стрТекста,разделительПолей); табЗагрузки.Колонки.Добавить("не_выгружать",Новый ОписаниеТипов("Булево"),"Не выгр."); КолоногВБанке=0; Для каждого зн Из масЗначСтр Цикл КолоногВБанке=КолоногВБанке+1; значение = СтрЗаменить(зн,"""",""); значение = СтрЗаменить(значение," ","_"); значение = СтрЗаменить(значение,".","_"); кол = табЗагрузки.Колонки.Добавить(значение,Новый ОписаниеТипов("Строка")); КонецЦикла; табЗагрузки.Колонки.Добавить("сумма_квыплате",Новый ОписаниеТипов("Строка"),"Сумма к выплате"); //Гробик для заполнения ЭлементыФормы.табЗагрузки.СоздатьКолонки(); Для номСтр = 2 По квоСтрок Цикл стрТекста = текст.ПолучитьСтроку(номСтр)+"0,00"; масЗначСтр = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(стрТекста,разделительПолей); новСтр = табЗагрузки.Добавить(); номЗнач = 1; Для каждого зн Из масЗначСтр Цикл новСтр[номЗнач] = зн; номЗнач = номЗнач + 1; КонецЦикла; КонецЦикла; КонецПроцедуры Процедура КоманднаяПанель1Загрузить(Кнопка) Если табДокумента.Количество() > 0 И Вопрос("Таблица будет очищена. Вы уверены?",РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; ЗагрузитьДокумент(); КонецПроцедуры Функция ЗагрузитьДокумент() Экспорт; Запрос = СформироватьЗапросДляПечати(); Выборка = Запрос.Выполнить().Выгрузить(); табДокумента = Новый ТаблицаЗначений; табДокумента.Очистить(); табДокумента.Колонки.Очистить(); табДокумента.Колонки.Добавить("не_выгружать",Новый ОписаниеТипов("Булево"),"Не выгр.",10); табДокумента.Колонки.Добавить("Карточный_счёт",Новый ОписаниеТипов("Строка"),"Карточный_счёт",30); табДокумента.Колонки.Добавить("ФИО",Новый ОписаниеТипов("Строка"),"ФИО",30); табДокумента.Колонки.Добавить("ИНН",Новый ОписаниеТипов("Строка")); табДокумента.Колонки.Добавить("Таб_N",Новый ОписаниеТипов("Строка")); табДокумента.Колонки.Добавить("сумма_квыплате",Новый ОписаниеТипов("Строка"), "Сумма к выплате"); ЭлементыФормы.табДокумента.СоздатьКолонки(); Для НомерСтроки = 0 По Выборка.Количество()-1 Цикл ньюСтр = табДокумента.Добавить(); ньюСтр.не_выгружать = Ложь; ньюСтр.Карточный_счёт = ""; ньюСтр.ФИО = Выборка[НомерСтроки].ФИО; ньюСтр.ИНН = Выборка[НомерСтроки].КодПоДРФО; ньюСтр.Таб_N = ""; ньюСтр.сумма_квыплате = Выборка[НомерСтроки].Сумма; КонецЦикла; КонецФункции Функция СформироватьЗапросДляПечати() Экспорт Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("Ссылка", заполнитьИзДокумента); Запрос.УстановитьПараметр("Дата", заполнитьИзДокумента.ДатаОплаты); Запрос.УстановитьПараметр("Контрагент", заполнитьИзДокумента.Контрагент); Запрос.Текст = " |ВЫБРАТЬ | ВЫБОР КОГДА (ФИОФизЛиц.Фамилия ЕСТЬ NULL) | ТОГДА Ведомость.ФизЛицо.Наименование | ИНАЧЕ | ФИОФизЛиц.Фамилия+ "" "" + ФИОФизЛиц.Имя +"" "" + ФИОФизЛиц.Отчество | КОНЕЦ КАК ФИО, | Ведомость.ФизЛицо.КодПоДРФО КАК КодПоДРФО, | Ведомость.НомерКарточки КАК НомерКарточки, | ВЫРАЗИТЬ(Ведомость.Сумма КАК ЧИСЛО(10,2)) КАК Сумма | | ИЗ | Документ.ЗарплатаКВыплатеОрганизаций.РаботникиОрганизации КАК Ведомость | ЛЕВОЕ СОЕДИНЕНИЕ | РегистрСведений.ФИОФизЛиц.СрезПоследних(&Дата) КАК ФИОФизЛиц | ПО ФИОФизЛиц.ФизЛицо = Ведомость.ФизЛицо | ГДЕ | Ведомость.Ссылка В | (ВЫБРАТЬ РАЗЛИЧНЫЕ | ППИ.Ведомость КАК Ведомость | ИЗ | Документ.ПлатежноеПоручениеИсходящее.ВыплатаЗаработнойПлаты КАК ППИ | ГДЕ ППИ.Ссылка В (&Ссылка) | ) | И Ведомость.ВыплаченностьЗарплаты = ЗНАЧЕНИЕ(Перечисление.ВыплаченностьЗарплаты.Выплачено) | И Ведомость.Банк = &Контрагент | И Ведомость.СпособВыплаты = ЗНАЧЕНИЕ(Перечисление.СпособыВыплатыЗарплаты.ЧерезБанк) | УПОРЯДОЧИТЬ ПО | Сумма |"; Возврат Запрос; КонецФункции Процедура КоманднаяПанель1ДляБанка(Кнопка) СвернутьДляБанка(); КонецПроцедуры Функция СвернутьДляБанка() табДокумента.Свернуть("ИНН, не_выгружать, Карточный_счёт, ФИО, Таб_N","сумма_квыплате"); Для каждого строкаТД из табДокумента Цикл строкаТВ=табЗагрузки.Найти(строкаТД.ИНН,"ИНН"); Если строкаТВ=Неопределено Тогда Сообщить("Сотрудник " + строкаТД.ФИО + " с ИНН " + строкаТД.ИНН + " отсутсвует в справочнике банка", СтатусСообщения.Важное); строкаТВ=табЗагрузки.Добавить(); КонецЕсли; строкаТВ.сумма_квыплате = строкаТД.сумма_квыплате; КонецЦикла; МасСтрок = Новый Массив; Для каждого Строка из табЗагрузки Цикл Если Строка.сумма_квыплате="0,00" Тогда МасСтрок.Добавить(Строка); КонецЕсли; КонецЦикла; Для каждого Строка из МасСтрок Цикл табЗагрузки.Удалить(Строка); КонецЦикла; КонецФункции Функция КоманднаяПанель1Записать(Кнопка) Экспорт; ВыгрузитьВтекстовыйФайл(); КонецФункции Функция ВыгрузитьВтекстовыйФайл() номрЧеловекаСчет=-1; суммаВыписки=0; табЗагрузки.Сортировать("ФИО"); НеНужные=0; Для Каждого ТекущаяСтрока Из табЗагрузки Цикл номрЧеловекаСчет = номрЧеловекаСчет+1; Если ТекущаяСтрока.не_выгружать = Ложь Тогда суммаВыписки=суммаВыписки+ТекущаяСтрока.сумма_квыплате; Иначе НеНужные=НеНужные+1; КонецЕсли; ВЧисло = строка(ТекущаяСтрока.сумма_квыплате); н1 = Найти(ВЧисло,",")+2; ВЧисло = Лев(ВЧисло,н1); ТоЧтоНадо = Число(ВЧисло); ТекущаяСтрока.сумма_квыплате=Формат(ТоЧтоНадо,"ЧДЦ=2;ЧРД='.';ЧГ=0"); КонецЦикла; Сообщить("Оработано " + номрЧеловекаСчет + " сотрудников! Сумма к выплате " + Формат(суммаВыписки,"ЧДЦ=2;ЧГ=0;ЧРД='.'") + " гривен" + Символы.ВК + НеНужные + "-е сотрудников не выгружено"); ДатаПлатежаБанк=Формат(ДатаПлатежа,"ДЛФ=Д"); Текст = Новый ЗаписьТекста(путьКФайлуВыгрузки, КодировкаТекста.ANSI); ДатаПлатежаБанк=Формат(ДатаПлатежа,"ДЛФ=Д"); Текст.ЗаписатьСтроку("Content-Type=doc/pay_sheet"); Текст.ЗаписатьСтроку(""); Текст.ЗаписатьСтроку("DATE_DOC="+ДатаПлатежаБанк); Текст.ЗаписатьСтроку("NUM_DOC="+НумДок); Текст.ЗаписатьСтроку("CLN_NAME=ТОВ ”ПРОБЛЕМЫ ОПТОМ”"); Текст.ЗаписатьСтроку("PAYER_BANK_MFO=300023"); Текст.ЗаписатьСтроку("PAYER_BANK_NAME=ПАТ ”УКРСОЦБАНК”"); Текст.ЗаписатьСтроку("PAYER_ACCOUNT=29240852000032"); //Формат(ТекущаяСтрока.сумма_квыплате,"ЧДЦ=2;ЧРД=.;ЧГ="); номрЧеловека = -1; Для Каждого ТекущаяСтрока Из табЗагрузки Цикл номрЧеловека = номрЧеловека+1; Если ТекущаяСтрока.не_выгружать = Ложь Тогда Текст.ЗаписатьСтроку("CARD_HOLDERS."+номрЧеловека+".CARD_NUM="+ТекущаяСтрока.Карточный_счёт); Текст.ЗаписатьСтроку("CARD_HOLDERS."+номрЧеловека+".CARD_HOLDER="+ТекущаяСтрока.ФИО); Текст.ЗаписатьСтроку("CARD_HOLDERS."+номрЧеловека+".STATUS=0"); Текст.ЗаписатьСтроку("CARD_HOLDERS."+номрЧеловека+".CARD_HOLDER_INN="+ТекущаяСтрока.ИНН); Текст.ЗаписатьСтроку("CARD_HOLDERS."+номрЧеловека+".AMOUNT="+ТекущаяСтрока.сумма_квыплате); Текст.ЗаписатьСтроку("CARD_HOLDERS."+номрЧеловека+".RESIDENT_FLAG=1"); Текст.ЗаписатьСтроку("CARD_HOLDERS."+номрЧеловека+".CARD_HOLDER_TABN="+ТекущаяСтрока.Таб_N); Иначе Сообщить("Сотрудник " + ТекущаяСтрока.ФИО + " сумма " + ТекущаяСтрока.сумма_квыплате + "грн в банк не выгружен!"); Продолжить; КонецЕсли; КонецЦикла; Текст.ЗаписатьСтроку("ONFLOW_TYPE=" + ПолеВвода1); Текст.ЗаписатьСтроку("AMOUNT="+Формат(суммаВыписки,"ЧДЦ=2;ЧГ=0;ЧРД='.'")); Текст.ЗаписатьСтроку("PAYER_BANK_ACCOUNT=29240852305000"); Текст.Закрыть(); КонецФункции разделительПолей = ";"; путьКФайлуЗагрузки="S:\Base1c\kb\zp.csv"; путьКФайлуВырузки ="S:\Base1c\kb\VBank.txt"; заполнитьИзДокумента=""; ПолеВвода1="Зарахування заробітної плати за січень 2012 року"; |
|||
41
Grobik
25.01.12
✎
15:15
|
Таки ошибка закралась:
Вместо Для Каждого ТекущаяСтрока Из табЗагрузки Цикл номрЧеловекаСчет = номрЧеловекаСчет+1; Если ТекущаяСтрока.не_выгружать = Ложь Тогда Читать Для Каждого ТекущаяСтрока Из табЗагрузки Цикл Если ТекущаяСтрока.не_выгружать = Ложь Тогда номрЧеловека = номрЧеловека+1; Плюс добавил в каждый этап ПроверкаРаз = ПроверкаРаз + 1; И в конце Если ПроверкаРаз <> "1111" Тогда ВызватьИсключение "Перед повторной выгрузкой в банк" + Символы.ВК + "необходимь заново перезаполнить все таблицы!" + Символы.ВК + "ПоказатьПлатежи > Заполнить > СобратьДляБанка > Загрузить в банк"; КонецЕсли; Теперь готово. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |