Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Очень популярная тема (более 25 ответов) ПриИзмененииПорядкаСтрок (число прочтений - 9366 )
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПриИзмененииПорядкаСтрок
Ответ #15 - 24. Апреля 2007 :: 21:03
Печать  
стормозил. мыслю глобально, и забываю про мелочи. конечно ТекущийДокумент спасет.
вот и решение, сравнивать в при записи ТЧ документа с ТЧ контекста.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПриИзмененииПорядкаСтрок
Ответ #16 - 25. Апреля 2007 :: 04:50
Печать  
Без ключевых строк при изменении порядка строк подобное простое сравнение не поможет Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: ПриИзмененииПорядкаСтрок
Ответ #17 - 25. Апреля 2007 :: 06:56
Печать  
artbear писал(а) 25. Апреля 2007 :: 04:50:
Без ключевых строк при изменении порядка строк подобное простое сравнение не поможет Печаль

Я ни как не пойму, о каком "простом сравнении" идет речь?

Простое построчное "реквизит-в-реквизит" уже обсудили и поняли, что изменение порядка всё убьёт.
Введение скрытого поля, заполняемого уникальными значениями, обсудили, оставили как вариант.
Разделение столбцов ТЧ на "ключевые" и "проверяемые" тоже обсудили. Пришли к выводу, что дело верное, осталось завернуть его в класс. Порядок строк тогда будет не страшен.

Да?
  
Наверх
ICQ  
IP записан
 
desty
Full Member
***
Отсутствует



Сообщений: 135
Зарегистрирован: 19. Апреля 2007
Пол: Мужской
Re: ПриИзмененииПорядкаСтрок
Ответ #18 - 25. Апреля 2007 :: 07:06
Печать  
А если в накладной будут две одиновые строчки
//
№1, Товар1, 15.00, 1500
№2, Товар1, 15.00, 1500

потом я меняю реквизит цена скажем на 30.00 и меняю сортировку скажем по реквизиту цена

порядок строк поменяется а по какому еще реквизиту мне однозначно произвести сравнение, значит нужен ключевой реквизит "КлючСтроки"


  
Наверх
 
IP записан
 
desty
Full Member
***
Отсутствует



Сообщений: 135
Зарегистрирован: 19. Апреля 2007
Пол: Мужской
Re: ПриИзмененииПорядкаСтрок
Ответ #19 - 25. Апреля 2007 :: 07:09
Печать  
Ты же будешь писать ечто такое

"ЕСли ТЧ_ДО.Товар = ТЧ_После.Товар ТАДЫ ..."

а если товары разные Если товары одинаковые да еще и вразных строках? я вот пересмотрел свой механизм определения... и пока остановился на том что пересохранять документ необходимо если разность таблиц по всем полям ТЧ, кроме НомераСтроки НЕ пустая
  
Наверх
 
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: ПриИзмененииПорядкаСтрок
Ответ #20 - 25. Апреля 2007 :: 07:26
Печать  
Дубли по ключевым полям у меня не допустимы, так что двух строк с "Товар1" у меня быть не может.

Сравнения типа
Код
Выбрать все
Если ( ТЧ_ДО.Товар = ТЧ_После.Товар ) Тогда 


я тоже стараюсь избегать. Не гибко и гиморно. Хотя, вероятно, быстрее работает.

Тебе нужно просто определить факт или найти расхождения?
  
Наверх
ICQ  
IP записан
 
desty
Full Member
***
Отсутствует



Сообщений: 135
Зарегистрирован: 19. Апреля 2007
Пол: Мужской
Re: ПриИзмененииПорядкаСтрок
Ответ #21 - 25. Апреля 2007 :: 07:32
Печать  
dnp писал(а) 25. Апреля 2007 :: 07:26:
Дубли по ключевым полям у меня не допустимы, так что двух строк с "Товар1" у меня быть не может.

Сравнения типа
Код
Выбрать все
Если ( ТЧ_ДО.Товар = ТЧ_После.Товар ) Тогда 


я тоже стараюсь избегать. Не гибко и гиморно. Хотя, вероятно, быстрее работает.

Тебе нужно просто определить факт или найти расхождения?


Сейчас сам факт, как найти расхождение в моем случае если ключевых реквизитов в принципе не имеется (Одинаковыми могут быть все - то есть одна позиция товара может быть отпущена по спеццене)
Нужно думать.... Ключевое поле должно быть, чтобы было по чему сравнивать...

К примеру в ОтчетеККМ, может присутствовать 2 строки с одинаковым товаром но с разной скидкой, если я изменю сортировку ТЧ и поменяю скидку... бог его знает как сравнить без ключа... чувствую придется вводить ИДСтроки Улыбка
  
Наверх
 
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: ПриИзмененииПорядкаСтрок
Ответ #22 - 25. Апреля 2007 :: 07:52
Печать  
Не, ну так-то понятно, про ОтчетККМ - молчу, там всё это может быть. Так что ИДстроки =  ...
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ПриИзмененииПорядкаСтрок
Ответ #23 - 25. Апреля 2007 :: 11:09
Печать  
artbear писал(а) 25. Апреля 2007 :: 04:50:
Без ключевых строк при изменении порядка строк подобное простое сравнение не поможет Печаль


Товар, количество, цена. Вот вам и ключ. У меня это работает уже год и никаких проблем.
Только я не пользуюсь ИТЗ, а просто сравниваю в классе две ТЗ по содержанию.
Какое кол-во строк может быть в документе... это мгновенно все происходит.
  
Наверх
 
IP записан
 
desty
Full Member
***
Отсутствует



Сообщений: 135
Зарегистрирован: 19. Апреля 2007
Пол: Мужской
Re: ПриИзмененииПорядкаСтрок
Ответ #24 - 25. Апреля 2007 :: 11:32
Печать  
Не согласен. это не ключ... в случае если реквизиты не уникальны

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

Код
Выбрать все
ИТЗ = создатьОбъект("ИндексированнаяТаблица");
ИТЗ.Загрузить(ТекущийДокумент());
ИТЗ.ДобавитьИндекс("ТестьУникальности1","Товар, Количество, Цена");
ИТЗ.ДобавитьИндекс("ТестьУникальности2","НомерСтроки,Товар, Количество, Цена");

Сообщить(" ну и вот и первый индекс"+ИТЗ.ИндексУникален("ТестьУникальности1"));
Сообщить(" ну и вот и  второй индекс"+ИТЗ.ИндексУникален("ТестьУникальности2"));

 

  
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: ПриИзмененииПорядкаСтрок
Ответ #25 - 26. Августа 2009 :: 10:15
Печать  
Вобщем давно уже задавался тем-же вопросом что и автор данной "ветки" - как-бы отследить изменение ТЧ документа
Как и всем, мне сильно мешает изменение порядка строк Улыбка Если СтрокаВверх, СтрокаВниз еще можно проанализировать, то сортировку строк никак не получается. Хотел ее заблокировать.
Почитал доку на предопределенную процедуру
Процедура ПриИзмененииПорядкаСтрок(<?>)
КонецПроцедуры
Синтаксис:
ПриИзмененииПорядкаСтрок(<Действие>)
Назначение:
Предопределенная процедура при изменении порядка строк многострочной части документа.
Параметры:
<Действие> - число: -1 - перемещение строки вверх; 1 - перемещение строки вниз; 0 - перенумерация строк.

Вполне логично предположить что
Код
Выбрать все
Если Действие = 0 Тогда
    СтатусВозврата(0)
КонецЕсли 


и наступит счастье! Фиг там!!! Действие = 0 не бывает никогда
СтрокаВверх = -1, СтрокаВниз = 1, ПеренумерацияСтрок = ...... ТОЖЕ 1.
И какого спрашивается!!!!???  Злой
Или нажатие кнопки "сортировать " не есть "перенумерация"? А что-же тогда "перенумерация"? Мне ее не удалось добиться.... Или у меня "гранаты не той системы"? Пробовал на версии 7.70.026, "голой" т.е. без единой ВК
У кого какие мысли по поводу?
  
Наверх
ICQ  
IP записан
 
Альтаир
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Местоположение: Харьков, Украина
Зарегистрирован: 26. Сентября 2008
Пол: Мужской
Re: ПриИзмененииПорядкаСтрок
Ответ #26 - 26. Августа 2009 :: 13:01
Печать  
А если сначала эти две ТЗ отсортировать по ключам, а потом уже сравнивать? Тогда изменение порядка строк никак не будет влиять.

Или "вычесть" одну из другой? Так даже лучше будет, если нужно пользователю показать разницу.
Во одной из таблиц инвертировать знак колонки, например "Количество", слить их а потом Свернуть().
  

Все животные равны, но некоторые равнее других.&&© Джордж Оруэлл "Скотный двор"
Наверх
www  
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: ПриИзмененииПорядкаСтрок
Ответ #27 - 27. Августа 2009 :: 11:51
Печать  
Альтаир писал(а) 26. Августа 2009 :: 13:01:
А если сначала эти две ТЗ отсортировать по ключам, а потом уже сравнивать? Тогда изменение порядка строк никак не будет влиять.

Или "вычесть" одну из другой? Так даже лучше будет, если нужно пользователю показать разницу.
Во одной из таблиц инвертировать знак колонки, например "Количество", слить их а потом Свернуть().

Ну ключ-то все равно нужен. И еще как обычно хочется универсальности. Т.е. чтобы не прописывать для каждого документа свой ключ и не добавлять в каждый документ реквизит _НомерСтроки например. И таким универсальным ключём является НомерСтроки .... если-бы его не портила сортировка с перенумерацией  строк Печаль
  
Наверх
ICQ  
IP записан
 
Альтаир
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 13
Местоположение: Харьков, Украина
Зарегистрирован: 26. Сентября 2008
Пол: Мужской
Re: ПриИзмененииПорядкаСтрок
Ответ #28 - 27. Августа 2009 :: 12:03
Печать  
В том-то и дело, что НомерСтроки не может быть универсальным из-за его легкой изменяемости.
Да и какой, он в сущности ключ? Ключ - это "Номенклатура", или "Контрагент" или т.д. в зависимости от вида документа.
  

Все животные равны, но некоторые равнее других.&&© Джордж Оруэлл "Скотный двор"
Наверх
www  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ПриИзмененииПорядкаСтрок
Ответ #29 - 27. Августа 2009 :: 13:22
Печать  
Всё не читал, но посмотри это
http://www.1cpp.ru/forum/YaBB.pl?num=1242654490
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать