Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3
Здравствуйте! Элементарный вопрос, на который я сам не найду ответа. Есть документы РасходнаяНакладная. В этот документ я ввел дополнительный реквизит ДатаВыдачи. Сама расходная на ремонтные работы может быть создана и заполнена, скажем, в конце августа, и это будет дата документа, а выдан отремонтированный аппарат может быть, скажем, в начале сентября. Дата выдачи проставляется в дополнительном реквизите ДатаВыдачи, имеющим тип Дата. Реквизит ВыбратьПериод подбирает документы по дате создания документа. Мне же нужно, чтобы он подбирал по дате выдачи (дополнительный реквизит ДатаВыдачи). Как это сделать? Спасибо!
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43
ZUBR @ Сегодня, 19:04
,
Надо ставить в цикле условие отбора по этому реквизиту.
ВыбратьДокументы(<Дата1>,<Дата2>) Назначение: Открыть выборку документов в интервале дат. Возвращает: 1 - если действие выполнено и в выборке есть хотя бы один документ; 0 - если действие не выполнено или в выборке нет ни одного документа. Параметры: <Дата1> - дата, документ или позиция начала выборки документов. Если данный параметр опущен, то выборка начинается с самого первого существующего в системе документа. <Дата2> - дата, документ или позиция конца выборки документов. Если данный параметр опущен, то выборка заканчивается самым последним существующим в системе документом.
andrew76 @ Сегодня, 19:51
,
Расх = СоздатьОбъект("Документ.РасходнаяНакладная"); Расх.ВыбратьДокументы(); Пока Расх.ПолучитьДокумент()=1 Цикл Если Расх.ДатаВыдачи=НужнаяДата Тогда //нужные действия КонецЕсли; КонецЦикла;
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3
andrew76 @ Сегодня, 18:00
, Этот вариант я обдумывал. Он не подходит по следующей причине. Предположим, документ датирован 28 августа. А дата выдачи 4 сентября. Я в отчете указываю период с 1 по 30 сентября(месяц). А поскольку реквизит "период" работает по дате документов, то данный документ вообще не попадет в отчет. За август он не попадет в отчет из-за того, что аппарат еще не был выдан, а за сентябрь из-за того, что дата документа не попадет в рамки периода. Мне нужно, чтобы дата периода обращалась к дате выдачи, а не дате создания документа.
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43
ZUBR @ Сегодня, 20:30
,
Так в "техничке" и пишут же ,что если даты периодов не указывать в качестве аргументов,то в выборку попадут все существующие документы в системе.А внутри цикла будете анализировать нужный реквизит ДатаВыдачи.Только если доков много , то 1с их будет обрабатывать медленно.
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3
andrew76 @ Сегодня, 18:50
, ну, это понятно. Можно вообще обойтись без реквизита ЗадатьПериод. Просто ввести два поля для ввода, а в цикле прописать условия с нужной датой.
andrew76 @ Вчера, 19:02
, если про тот же запрос тогда нужно убрать из запроса строчку Период - её мы не переучим смотреть в другое поле; добавить поле с этим реквизитом и добавить условия
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 99.1
Виборкою чи запитом при таких умовах... це жах. Якщо воно так Вам конче потрібно - створіть новий документ, назвіть його "Видача видаткових накладних", він підпорядкується Видатковій (вим) накладній (ним) і з ним далі вже працюйте... Тоді Ви зможете отримати необхідний Вам функціонал без спотворювання форми самої Видаткової накладної, а також будувати звіти на тему: хто, коли, з ким, де, кому видав ТМЦ по видатковій накладній.
1. На сьогодні Ви постійно теліпаєте Видаткову накладну, змінюєте реквізити, перепроводжуєте. 2. Той реквізит про який йде мова, краще діставати прямим запитом, але при величезній кількості документів це все одно буде займати час.
Краще, на мою думку, створити новий документ.
Сообщение отредактировал Sharzem - 23.09.19, 7:26
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43
Интересно , на какой максимальный промежуток времени отличается ДатаВыдачи от ДатыДокумента этой накладной ? Месяц,2 месяца,Год ? Если знать это интервал,то можно подсократить количество перебираемых документов:
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3
andrew76 @ Вчера, 14:00
, Этот вариант не подходит, поскольку мне не нужны документы с прошлого месяца, выданные в прошлом месяце. Хотя, если с условием по дате выдачи в цикле, тогда вариант неплохой. Но бывает по-всякому. Бывает и полгода. Один аппарат год не забирали))) Хочется абсолютной точности.)))
Группа: Пользователи
Сообщений: 231
Из: Київ
Спасибо сказали: 5 раз
Рейтинг: 3
Снова здравствуйте. Я вот решил обойти проблему с датами путем изменения даты проведенного документа на момент выдачи. Прописал все в модуле формы в процедуре Видати. Но система не желает сохранять документ с измененной датой. При перепроведении пишет предупреждение "Изменена дата проведенного документа!" И не закрывает документ и не перепроводит, пока не отменишь изменение даты. Где- то есть предохранитель. Я не могу найти. Если кто знает, подскажите, где он зашит и можно ли это ограничение отменить или обойти. Спасибо!
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43
Добрый вечер.У этого документа нет подчиненных документов ? Лучше перед этим скопируйте всю базу в архив,чтобы была копия на всякий случай. Сначала сделайте документ не проведённым. Для этого, щелкните на нем правой кнопкой мыши и выберите соответствующую команду : "Cделать не проведённым" . Значок документа изменится - он будет без пиктограммы "птичка-галочка" слева. Теперь открывайте документ, меняйте дату на нужную и проводите.
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43
Если документов много , то придется делать примерно такую обработку:
Док = СоздатьОбъект("Документ.РасходнаяНакладная"); Док.ВыбратьДокументы(НачПериода,КонПериода); Пока Док.ПолучитьДокумент() = 1 Цикл Если Док.Проведен() = 1 Тогда Док.СделатьНеПроведенным(); Док.ДатаДок=нужнаяДата; Док.Провести(); Док.Записать(); КонецЕсли; КонецЦикла;
Но мне пишет сообщение, что документ не выбран... Можно ли это сделать ?
Sharzem @ 23.09.19, 8:18
, я не хочу створювати новий документ, тому що мені треба, щоб дані табличної частини оброблялись так, як вони обробляються зараз в ВидатковійНакладній. Реквізити її я практично не змінюю, а додаю свої. Ті, які мені потрібні. Тому, як Ви виразились, і "теліпаю" цей документ.
Ага, накопал. Этот метод используется только для объектов, созданных функцией "СоздатьОбъект" и его, наверное, нельзя использовать в модуле документа((
В мене є готова зовнішня обробка для цього. Вибравши період і типи докуменів можна, помітити на видалення, зняти помітку, зробити непроведеним, провести документии. А також поміняти дату документу (причому зберегти її статус (проведений, непроведений, помічений на видалення). Якщо в періоді непотрібно обробляти всі документи, то можна поставити відмітку які саме обробляти. Знайшов її в і Неті і трішки переробив її. Якщо потрібно можу скинути
ZUBR @ Вчера, 22:54
,
Із документа (із модуля Форми або модуля документа) неможна видалити чи зняти з проведення цей же документ. Хоча зустрічав цікавий варіант: Реалізовано функцію зміни дати в проведенім документі. Візуально все виглядає ніби насправді відкривається проведений документ, міняється дата і по "ОК" зберігається проведений документ із новою датою. Насправді там застосували деяку хитрість, а саме при відкритті документу відкривався не сам документ, а створювалась копія. на цій копії документу робились всі потрібні зміни, мінялась дата, мінялись інші реквізити в документі, добавляли товар в табличну частину....... І по кнопці "ОК" оригінальний документ робили непроведеним (це вже можливо, так як це робиться з іншого документу), переносили всі дані з копії документа, записували і проводили документ, а копію просто незберігали.
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43
Цитата(volodya1122 @ 30.09.19, 18:05)
І по кнопці "ОК" оригінальний документ робили непроведеним (це вже можливо, так як це робиться з іншого документу), переносили всі дані з копії документа, записували і проводили документ, а копію просто незберігали.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!