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

Автор Тема: как сравнить текущую ячейку с предыдущей в табличном поле?  (Прочитано 1160 раз)

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

Онлайн mila1231

  • ***
  • Сообщений: 146
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-06-10
  • Сайт: 
  • Профессия: Ученик 1С
Не могу сообразить, как сохранить значение предыдущей ячейки и в дальнейшем его сравнить с текущем значением ячейки.


Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1097
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
в промежуточную переменную
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн LexaK

  • *****
  • Сообщений: 1246
  • РЕПУТАЦИЯ: 344
  • КПД: 28%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
программируете событие формы-таблицы при активизации ячейки, вот простой пример, без учета смены колонки,
&НаКлиенте
Процедура тзДанныеПриАктивизацииЯчейки(Элемент)

Если Элемент.ТекущиеДанные = Неопределено Тогда
//не выбрана строка, выходим
Возврат;
КонецЕсли;

лкТекЗнач = Элемент.ТекущиеДанные[СтрЗаменить(Элемент.ТекущийЭлемент.Имя,Элемент.Имя,"")]; // текущее значение выбранной ячейки

//глПредыдущееЗначение - "Условно глобальная" переменная для хранения предыдущего значения ячейки
//Если ЗначениеЗаполнено(глПредыдущееЗначение) Тогда
Если глПредыдущееЗначение = Неопределено Тогда
//предыдущего значения еще нет, ни чего не делаем
Иначе
//есть предыдущее значение, выполняем нужные действия
// <ваш код> например:
Сообщить("Старое значеение: " + глПредыдущееЗначение + " ,новое значение: " + лкТекЗнач);
КонецЕсли;
//запоминаем текущее значение
глПредыдущееЗначение = лкТекЗнач;

КонецПроцедуры

Помогло? - Нажми СПАСИБО!!!
                       :)

Онлайн mila1231

  • ***
  • Сообщений: 146
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-06-10
  • Сайт: 
  • Профессия: Ученик 1С
моё предположение было такое...
Перем ПредДата  ;

Процедура ОсновныеДействияФормывыдача(Кнопка)
ТекДанные = ЭлементыФормы.Таблица.ТекущиеДанные;

для каждого ТекДанные из таблица цикл

Если формат(Текданные.дата_приемки, "ДЛФ=Д") > Формат(ПредДата, "ДЛФ=Д") тогда

Док = Документы.Выдача_СИ.СоздатьДокумент();
        Док.Дата = текущаяДата();
Стр = док.приборы.Добавить();

для каждого стр из док.Приборы цикл
        стр.Тип_СИ = ТекДанные.Тип_СИ;
        Стр.Заводской_Номер = ТекДанные.Номер_прибора;

        конеццикла;
         док.Записать();
        конецЕсли;
 ПредДата = ТекДанные.дата_приемки;
 конецЦикла;


КонецПроцедуры

Задача такая создавать документ и в него записывать все строки, у которых дата одна и также(т.е в табличное поле документа несколько строк записывается), для другой даты создавать следующий документ.Предположение напрочь не работает, вернее документы то создаются, но не одним документом, а несколькими. Может взглядом скажите где не так?

Оффлайн LexaK

  • *****
  • Сообщений: 1246
  • РЕПУТАЦИЯ: 344
  • КПД: 28%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
так совсем по другому выглядит ваша задача, вот один из путей ее решения
1.отсортируйте исходную таблицу с данными по колонке дата - Дата_Приемки
2.при переборе в цикле проверяете смену даты, если дата изменилась, записываете/создаете документа
вот небольшой пример кода, который еще надо доработать. надеюсь что справитесь
Процедура тестСоздатьДокумент(Кнопка)

лкТекДата = 0;
лкДок = 0;
таблица.Сортировать("дата_приемки");
Для каждого лкСтр Из таблица Цикл

Если лкТекДата <> НачалоДня(лкСтр.дата_приемки) Тогда
//произошла смена даты
Если лкДок <> 0 Тогда
//есть незаписанный докумен, записываем его
Попытка
лкДок.Записать(РежимЗаписиДокумента.Проведение);
Исключение
лкОшибка = ОписаниеОшибки();
Сообщить(лкОшибка);
КонецПопытки;
КонецЕсли;

//запоминаем новую дату
лкТекДата <> НачалоДня(лкСтр.дата_приемки);

//Создаем новый документ. заполняем шапку документа
лкДок = Документы.Выдача_СИ.СоздатьДокумент();
лкДок.Дата = текущаяДата();
лкДок.Отвсетственный = ПараметрыСеанса.ТекущийПользователь; //пример
//и т.д. ...

КонецЕсли;

//заполняем табличную часть документа
лкСтрДок = лкДок.Приботы.Добавить();
лкСтрДок.Тип_СИ = лкСтр.Тип_СИ;
лкСтрДок.Заводской_Номер = лкСтр.Номер_прибора;
лкСтрДок.Количество = 1; //пример
//и т.д. ...

КонецЦикла;

Если лкДок <> 0 Тогда
//есть незаписанный докумен, записываем его
Попытка
лкДок.Записать(РежимЗаписиДокумента.Проведение);
Исключение
лкОшибка = ОписаниеОшибки();
Сообщить(лкОшибка);
КонецПопытки;
КонецЕсли;

КонецПроцедуры
Помогло? - Нажми СПАСИБО!!!
                       :)

Онлайн mila1231

  • ***
  • Сообщений: 146
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-06-10
  • Сайт: 
  • Профессия: Ученик 1С
LexaK, всё получилось)) спасибо))


Теги:
 

Поле не найдено"ЗаказПокупателя.Услуги.Ссылка"<<?>>ЗаказПокупателя.Услуги.Ссылка

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

Ответов: 6
Просмотров: 6127
Последний ответ 05 Дек 2013, 00:01
от romanprogrammist
{Форма.Форма.Форма(11)}: Поле объекта не обнаружено

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

Ответов: 2
Просмотров: 1892
Последний ответ 09 Дек 2015, 19:33
от Oks
Поле "ВаловаяПрибыль" не может быть использовано в группировке "Store" СКД

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

Ответов: 2
Просмотров: 5671
Последний ответ 10 Июл 2014, 15:16
от virtus
Не заполняется поле "Цена" при формировании документа "Пересчет товаров"

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

Ответов: 4
Просмотров: 647
Последний ответ 29 Дек 2016, 09:54
от Innakecha
Поле "Профессия"!!!

Автор MytiРаздел Предложения по работе форума

Ответов: 5
Просмотров: 4762
Последний ответ 23 Ноя 2010, 23:48
от progmikon

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

oleg-x
105 Сообщений
alex0402
93 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
65 Сообщений
ilyay ilyay
49 Сообщений
Golickoff Golickoff
49 Сообщений
AIFrame
47 Сообщений
ab30ru
38 Сообщений
wise wise
34 Сообщений
Амал
30 Сообщений
LexaK
22 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal