Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
26 Июл 2017, 01:39
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: (Корректировка движений регистров)  (Прочитано 861 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн GanG031

  • ***
  • Сообщений: 146
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-10-28
  • Сайт: 
  • Профессия: Ученик 1С
Доброго времени суток, Уважаемые! Суть в следующем: пишу обработку, на которой размещается 2 таблицы значений, 2 кнопки. В первой таблице значений данные из текстового файла, во второй данные, загруженные из регистра сведений. Реквизиты у обоих тз одинаковые (Период, Сотрудник, Табельный Номер, Составная Часть, Индексируется, Сумма). Суть обработки в том, что мы загружаем данные, выгруженные из одной конфигурации, а именно движения регистра накопления, и сравниваем их с нашими движениями регистра. По полям "Период, сотрудник, табельный номер, составная часть, индексируется" мы однозначно идентифицируем строку, если такое совпадение найдено, но сравниваем сумму, и если она различна, то изменяем ее. На форме 2 кнопки: Загрузить (загружает данные из файла и регистра, и выводит их на форму) и Исправить (исправляем сумму). Начал писать вот такой код(благо, форумчане помогли):

<code>
&НаКлиенте
Процедура Загрузить(Команда)
   ЗагрузитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗагрузитьНаСервере()
       Текст = Новый ТекстовыйДокумент();
Текст.Прочитать("D:\1.txt");
СимволРазделитель = ";";
Для a = 1 По Текст.КоличествоСтрок() Цикл
   Стр = Текст.ПолучитьСтроку(a) ;
   
   ВременнаяСтрока = Стр;
   //найдем разделитель
   НомерСимвола = Найти(ВременнаяСтрока, СимволРазделитель);
   
   Период =           СокрЛП(Лев(ВременнаяСтрока, НомерСимвола -1));
   ВременнаяСтрока =   Сред(ВременнаяСтрока,НомерСимвола + 1);
   
   
   НомерСимвола       = Найти(ВременнаяСтрока,СимволРазделитель);
   Сотрудник =       СокрЛП(  Лев(ВременнаяСтрока,НомерСимвола - 1));
   ВременнаяСтрока =   Сред(ВременнаяСтрока,НомерСимвола + 1);
   
   
      НомерСимвола       = Найти(ВременнаяСтрока,СимволРазделитель);
   ТабельныйНомер =    СокрЛП(  Лев(ВременнаяСтрока,НомерСимвола - 1));
   ВременнаяСтрока =   Сред(ВременнаяСтрока,НомерСимвола + 1);
   
   
      НомерСимвола       = Найти(ВременнаяСтрока,СимволРазделитель);
   СоставнаяЧасть =    СокрЛП(  Лев(ВременнаяСтрока,НомерСимвола - 1));
   ВременнаяСтрока =    Сред(ВременнаяСтрока,НомерСимвола + 1);
   
   
      НомерСимвола   = Найти(ВременнаяСтрока,СимволРазделитель);
   Индексируется =       СокрЛП(  Лев(ВременнаяСтрока,НомерСимвола - 1));
   ВременнаяСтрока =   Сред(ВременнаяСтрока,НомерСимвола + 1);
 
     
   Сумма =  Число (ВременнаяСтрока);
   


   ТаблицаЗначений = Новый ТаблицаЗначений;
   ТаблицаЗначений.Колонки.Добавить("Период");
   ТаблицаЗначений.Колонки.Добавить("Сотрудник");
   ТаблицаЗначений.Колонки.Добавить("ТабельныйНомер");
   ТаблицаЗначений.Колонки.Добавить("СоставнаяЧасть");
   ТаблицаЗначений.Колонки.Добавить("Индексируется");
   ТаблицаЗначений.Колонки.Добавить("Сумма");
    
      Строка = ТаблицаЗначений.Добавить();
      Строка.Сотрудник = ВременнаяСтрока.Сотрудник;
      Строка.ТабельныйНомер = ВременнаяСтрока.ТабельныйНомер;
      Строка.СоставнаяЧасть =ВременнаяСтрока. СоставнаяЧасть;
      Строка.Индексируется = ВременнаяСтрока.Индексируется;
      Строка.Сумма = ВременнаяСтрока.Сумма;
          
    КонецЦикла;
ЗначениеВДанныеФормы(ТаблицаЗначений, Таблица1);   
КонецПроцедуры
</code>

Подскажите пожалуйста дальнейший алгоритм действий. Пока дошел до того, что бы выгрузить Таблицу значений в таблицу значений на форме, но почему то на форме оказывается только последняя строка из таблицы значений( видимо данные по циклу перезаписываются в одну строку, и соответственно последняя строка у нас выводится). Подскажите пожалуйста, в чем ошибка?


Оффлайн GanG031

  • ***
  • Сообщений: 146
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-10-28
  • Сайт: 
  • Профессия: Ученик 1С
что то странное, ничего не изменял вроде бы в коде, но начала выскакивать ошибка :
{Форма.Форма.Форма(55)}: Значение не является значением объектного типа (Сотрудник)
      Строка.Сотрудник = ВременнаяСтрока.Сотрудник;

Оффлайн 1С-Учебный Центр №3

  • *
  • Сообщений: 49
  • РЕПУТАЦИЯ: 2
  • КПД: 4%
  • тел. (495) 542-19-94
  • Регистрация: 2013-03-14
  • Компания: 1С-Учебный Центр №3
  • Профессия: Консультант 1С
Доброго времени суток, Уважаемые! Суть в следующем: пишу обработку, на которой размещается 2 таблицы значений, 2 кнопки. В первой таблице значений данные из текстового файла, во второй данные, загруженные из регистра сведений. Реквизиты у обоих тз одинаковые (Период, Сотрудник, Табельный Номер, Составная Часть, Индексируется, Сумма). Суть обработки в том, что мы загружаем данные, выгруженные из одной конфигурации, а именно движения регистра накопления, и сравниваем их с нашими движениями регистра. По полям "Период, сотрудник, табельный номер, составная часть, индексируется" мы однозначно идентифицируем строку, если такое совпадение найдено, но сравниваем сумму, и если она различна, то изменяем ее. На форме 2 кнопки: Загрузить (загружает данные из файла и регистра, и выводит их на форму) и Исправить (исправляем сумму). Начал писать вот такой код(благо, форумчане помогли):

<code>
&НаКлиенте
Процедура Загрузить(Команда)
   ЗагрузитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗагрузитьНаСервере()
       Текст = Новый ТекстовыйДокумент();
Текст.Прочитать("D:\1.txt");
СимволРазделитель = ";";
Для a = 1 По Текст.КоличествоСтрок() Цикл
   Стр = Текст.ПолучитьСтроку(a) ;
   
   ВременнаяСтрока = Стр;
   //найдем разделитель
   НомерСимвола = Найти(ВременнаяСтрока, СимволРазделитель);
   
   Период =           СокрЛП(Лев(ВременнаяСтрока, НомерСимвола -1));
   ВременнаяСтрока =   Сред(ВременнаяСтрока,НомерСимвола + 1);
   
   
   НомерСимвола       = Найти(ВременнаяСтрока,СимволРазделитель);
   Сотрудник =       СокрЛП(  Лев(ВременнаяСтрока,НомерСимвола - 1));
   ВременнаяСтрока =   Сред(ВременнаяСтрока,НомерСимвола + 1);
   
   
      НомерСимвола       = Найти(ВременнаяСтрока,СимволРазделитель);
   ТабельныйНомер =    СокрЛП(  Лев(ВременнаяСтрока,НомерСимвола - 1));
   ВременнаяСтрока =   Сред(ВременнаяСтрока,НомерСимвола + 1);
   
   
      НомерСимвола       = Найти(ВременнаяСтрока,СимволРазделитель);
   СоставнаяЧасть =    СокрЛП(  Лев(ВременнаяСтрока,НомерСимвола - 1));
   ВременнаяСтрока =    Сред(ВременнаяСтрока,НомерСимвола + 1);
   
   
      НомерСимвола   = Найти(ВременнаяСтрока,СимволРазделитель);
   Индексируется =       СокрЛП(  Лев(ВременнаяСтрока,НомерСимвола - 1));
   ВременнаяСтрока =   Сред(ВременнаяСтрока,НомерСимвола + 1);
 
     
   Сумма =  Число (ВременнаяСтрока);
   


[color=красный ]   ТаблицаЗначений = Новый ТаблицаЗначений;[/color]
   ТаблицаЗначений.Колонки.Добавить("Период");
   ТаблицаЗначений.Колонки.Добавить("Сотрудник");
   ТаблицаЗначений.Колонки.Добавить("ТабельныйНомер");
   ТаблицаЗначений.Колонки.Добавить("СоставнаяЧасть");
   ТаблицаЗначений.Колонки.Добавить("Индексируется");
   ТаблицаЗначений.Колонки.Добавить("Сумма");
    
      Строка = ТаблицаЗначений.Добавить();
      Строка.Сотрудник = ВременнаяСтрока.Сотрудник;
      Строка.ТабельныйНомер = ВременнаяСтрока.ТабельныйНомер;
      Строка.СоставнаяЧасть =ВременнаяСтрока. СоставнаяЧасть;
      Строка.Индексируется = ВременнаяСтрока.Индексируется;
      Строка.Сумма = ВременнаяСтрока.Сумма;
          
    КонецЦикла;
ЗначениеВДанныеФормы(ТаблицаЗначений, Таблица1);   
КонецПроцедуры
</code>

Подскажите пожалуйста дальнейший алгоритм действий. Пока дошел до того, что бы выгрузить Таблицу значений в таблицу значений на форме, но почему то на форме оказывается только последняя строка из таблицы значений( видимо данные по циклу перезаписываются в одну строку, и соответственно последняя строка у нас выводится). Подскажите пожалуйста, в чем ошибка?


Таблица значений создается в цикле (нужная строка выделена цветом), поэтому в ней одна единственная строчка.
Создание таблицы значений нужно делать перед циклом. Далее таблицу значений закидываем во временную таблицу. Проводим сопоставление с объектами ИБ(средствами запроса). Дальше запросом вытаскиваем различающиеся записи между двумя таблицами.


Теги:
 

Документ "Корректировка амортизации"

Автор FiestaРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 4860
Последний ответ 26 Июл 2011, 15:27
от Вероничка
Флаг "Ручная корректировка" в документе

Автор Natylia89Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 5775
Последний ответ 26 Окт 2012, 10:48
от Natylia89
Документ "Корректировка реализации" изменения в релизе 3.0.36.18 в параметре Отражать корректировку

Автор gapp2009Раздел Пользователям "1С - Предприятие 8"

Ответов: 0
Просмотров: 1871
Последний ответ 16 Дек 2014, 02:00
от gapp2009
Контроль остатков товаров в документе "Корректировка реализации"

Автор LadyGaGa2012Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 2178
Последний ответ 14 Май 2014, 12:29
от LadyGaGa2012
Ручная корректировка проводок в документе "Начисление зарплаты"

Автор JemchujinaРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 7317
Последний ответ 04 Июн 2014, 13:05
от omv

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

alex0402
92 Сообщений
oleg-x
78 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
67 Сообщений
Golickoff Golickoff
51 Сообщений
ilyay ilyay
42 Сообщений
AIFrame
42 Сообщений
Амал
30 Сообщений
Dethmontt Dethmontt
22 Сообщений
lansy
22 Сообщений
wise wise
21 Сообщений

* Кто онлайн

  • Точка Гостей: 169
  • Точка Скрытых: 0
  • Точка Пользователей: 7
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal