|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
Добрый день! Есть процедура проведения документа "ПланированиеОказанияУслуг" . Требуется в обработку проведения этого документа добавить проверку того, чтобы поле СервисМенеджер и ОтветственныйМенеджер были обязательно заполненными. В табличной части документа поля ОтветственныйМенеджер нет. Поэтому в обработку проведения добавил запрос. Вот получившийся текст (вместе с запросом) обработки проведения. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53.
Как я понимаю, после запроса необходимо проверить содержание поля ОтветственныйМенеджер . Если значение этого поля NULL, тогда нужно отказать в проведении документа и вывести пользователю сообщение. Код: sql 1. 2. 3. 4. 5.
Поле СервисМенеджер присутствует в табличной части документа. Если его значение NULL, то также требуется отказать в проведении документа и вывести сообщение пользователю. Код: sql 1.
Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 10:40 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
alexander4321, Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 11:24 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
deadng, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
Так все работает. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 12:03 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
В документе «ОказаниеУслугСервисМенеджером» требуется добавить команду "Заполнить сегодняшними" - при нажатии на кнопку надо заполнять табличную часть услугами, запланированными на сервис-менеджера, указанного в шапке документа, теми заданиями, которые запланированы на сегодняшний день и еще не выполнены. Добавил такую команду, составил запрос в модуле команды: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
Строку запроса для получения даты выполнения услуги Код: sql 1.
включил с тем расчетом, что можно проверить ее на соответствие NULL: если не NULL, то услуга была выполнена, соответственно данную услугу не нужно выводить в результате выполнения запроса. Проверку на NULL нужно в запросе делать или в обработке результата запроса? Также возникли вопросы по параметрам запроса. Так как список нужно выводить на сегодня, то ввел соответствующий параметр. Значением параметра установил значение переменной ДатСег , которая получает значение текущей дата (во всяком случае нашел в интернете такую функцию): Код: sql 1. 2. 3.
Вторым параметром является выбранный в шапке документа менеджер Код: sql 1.
Как правильно записать, чтобы СервисМенеджер выбирался из шапки документа? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 15:03 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПланированиеОказаниеУслугСрезПоследних.СервисМенеджер, | ПланированиеОказаниеУслугСрезПоследних.Услуга, | ПланированиеОказаниеУслугСрезПоследних.Контрагент, | ПланированиеОказаниеУслугСрезПоследних.ДокументОснование, | ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения, | ПланированиеОказаниеУслугСрезПоследних.РеальнаяДатаВыполнения |ИЗ | РегистрСведений.ПланированиеОказаниеУслуг.СрезПоследних(&НаСегодня, ) КАК ПланированиеОказаниеУслугСрезПоследних |ГДЕ | ПланированиеОказаниеУслугСрезПоследних.СервисМенеджер = &СервисМенеджер"; и Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПланированиеОказаниеУслугСрезПоследних.СервисМенеджер, | ПланированиеОказаниеУслугСрезПоследних.Услуга, | ПланированиеОказаниеУслугСрезПоследних.Контрагент, | ПланированиеОказаниеУслугСрезПоследних.ДокументОснование, | ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения, | ПланированиеОказаниеУслугСрезПоследних.РеальнаяДатаВыполнения |ИЗ | РегистрСведений.ПланированиеОказаниеУслуг.СрезПоследних(&НаСегодня, СервисМенеджер = &СервисМенеджер) КАК ПланированиеОказаниеУслугСрезПоследних"; могут дать разные результаты - уверены что №1? >ПланированиеОказаниеУслугСрезПоследних.РеальнаяДатаВыполнения включил с тем расчетом, что можно проверить ее на соответствие NULL null в ней откуда возьмется? результат запроса пустой? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 15:22 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
Последний выдох ГПЖnull в ней откуда возьмется? результат запроса пустой? Мне нужно вывести запланированные, но еще не исполненные услуги. Соответственно, у исполненных услуг РеальнаяДатаВыполнения будет заполнена, а у только запланированных не заполнена. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 15:36 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
Последний выдох ГПЖ, по поводу вариантов запросов... При запуске конфигурации выдает ошибку Код: sql 1. 2. 3. 4.
Вот мне и нужно передать одним параметром текущую дату, а вторым - выбранного в шапке документа менеджера. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 15:43 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
alexander4321, РеальнаяДатаВыполнения будет заполнена, а у только запланированных не заполнена. Незаполненная дата имеет значение, а NULL - это, грубо говоря, отсутствие какого-либо значения. И за пределами запросов null-ами не нужно пользоваться вообще. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 15:46 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
alexander4321, {Документ.ОказаниеУслугСервисМенеджером.Форма.ФормаДокумента(43,46)}: Переменная не определена (СервисМенеджер)И не пихайте запросы в форму документа, все что не связано с интерактивными действиями, кладите в модуль объекта или менеджера. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 15:50 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
alexander4321Вот мне и нужно передать одним параметром текущую дату, а вторым - выбранного в шапке документа менеджера. Ну так передавай :) Используй ТекущаяДата(). РабочаяДата() такой функции нет. Есть Свойство "РабочаяДата", которая может не использоваться в зависимости от настроек конфы (ИспользованиеРабочейДаты). У тебя же в шапке ОтветственныйМенеджер, а СервисныйМенеджер в ТЧ? Какой тебе нужен в итоге? Если второй то делай соединение с ТЧ в запросе. ПС: научись пользоваться синтакс-помощником. Сильно поможет когда не будет интернета :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 15:57 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
alexander4321Последний выдох ГПЖnull в ней откуда возьмется? результат запроса пустой? Мне нужно вывести запланированные, но еще не исполненные услуги. Соответственно, у исполненных услуг РеальнаяДатаВыполнения будет заполнена, а у только запланированных не заполнена. вы путаете null, пустое значение определенного типа и неопределено... учите мат. часть от 1с ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 16:00 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
alexander4321Последний выдох ГПЖ, по поводу вариантов запросов... При запуске конфигурации выдает ошибку Код: sql 1. 2. 3. 4.
Вот мне и нужно передать одним параметром текущую дату, а вторым - выбранного в шапке документа менеджера. курите СП, там четко написано что и на какой стороне видно, раз уж сели писать в клиент-серверном варианте ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 16:01 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
alexander4321, Вот мне и нужно передать одним параметром текущую датуПередавайте текущую, ТекущаяДата(). В управляемых формах с рабочей датой лучше не связываться. Если СервисМенеджер это реквизит вашего документа, то в форме его передавайте как Объект.СервисМенеджер, а в модуле объекта просто СервисМенеджер. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 16:05 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
deadng Используй ТекущаяДата(). РабочаяДата() такой функции нет. Это помогло. javapeckerЕсли СервисМенеджер это реквизит вашего документа, то в форме его передавайте как Объект.СервисМенеджер Это тоже сработало. На курсах сейчас учусь. Преподаватель задал, вот я и парюсь. С пустой датой тоже все понял. Добавил к запросу параметр &ПустаяДата . Вот получившийся текст запроса: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
Единственное, что не могу сейчас протестировать, нужно отъехать. Но вечером обязательно проверю работоспособность. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 16:18 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПланированиеОказаниеУслугСрезПоследних.СервисМенеджер, | ПланированиеОказаниеУслугСрезПоследних.Услуга, | ПланированиеОказаниеУслугСрезПоследних.Контрагент, | ПланированиеОказаниеУслугСрезПоследних.ДокументОснование, | ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения, | ПланированиеОказаниеУслугСрезПоследних.РеальнаяДатаВыполнения |ИЗ | РегистрСведений.ПланированиеОказаниеУслуг.СрезПоследних КАК ПланированиеОказаниеУслугСрезПоследних |ГДЕ | ПланированиеОказаниеУслугСрезПоследних.СервисМенеджер = &СервисМенеджер | И ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = &ПустаяДата | И ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = &Сегодня"; Запрос.УстановитьПараметр("ПустаяДата",'00010101'); Запрос.УстановитьПараметр("Сегодня", ТекущаяДата()); Запрос.УстановитьПараметр("СервисМенеджер", Объект.СервисМенеджер); рукалицо... а если я напланировал на 10 лет вперед? мне обязательно учитывать будущее? | И ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = &ПустаяДата | И ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = &Сегодня"; не удивляйтесь пустоте... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 17:54 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
Последний выдох ГПЖ | И ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = &ПустаяДата | И ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = &Сегодня"; не удивляйтесь пустоте... Удивился пустоте. Параметр &ПустаяДата подставляю в строку Код: sql 1.
Также добавил цикл заполнения табличной части из ВыборкаДетальныеЗаписи . В итоге вот, что получилось: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.
Тестирую, строки в документе все равно не заполняются. Не посмотрите, остались еще ошибки? Если что, то буду преподавателя на консультации спрашивать. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 21:49 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
ПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = ДатьВремя(1,1,1) Так проще. Вручную проверили что у данного менеджера есть записи в регистре сведений? Если все есть - то пробуйте убирать условия по одному - вдруг заработает? И вы уверены что Сервисменеджер и объект.менеджер один и тот же справочник? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 22:30 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
Программист 1с, косячит вот эта строка Код: sql 1. 2. 3.
Без этого параметра все нормально работает. Единственное, что в отбор попадают и запланированные на будущее, не только на текущую дату, услуги. Программист 1сПланированиеОказаниеУслугСрезПоследних.ПланируемаяДатаВыполнения = ДатьВремя(1,1,1) Так проще. Это нужно вместо строки Код: sql 1.
вставить такую строку Код: sql 1.
без параметра? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 23:26 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
Код: sql 1.
Если такую строку в запрос вставить, то выдает ошибку при попытке запустить на исполнение запрос из документа. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 23:30 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
alexander4321, не ДатьВремя, а ДатаВремя, Программист 1с, видимо, опечатался. И если вы в запросе сравниваете дату с текущей датой, вряд ли она совпадет, потому что текущая дата с секундами, и шансов на совпадение с датой регистра ноль. Приводите даты к началу дня перед сравнением. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2013, 01:29 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
Параметр сегодняшней даты привожу к началу дня таким образом Код: sql 1. 2. 3.
А вот как привести к началу дня ПланируемуюДатуВыполнения в запросе? В конструкторе запроса для работы с датами не нашел функции НачалоДня. Там есть ДЕНЬ, НачалоПериода и т.д. Не подскажете, как результат ПланируемойДатыВыполнения в запросе привести к началу дня? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2013, 10:24 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
в запросе НачалоПериода(ВашаДата,ДЕНЬ) ps Конечно ДатаВремя - опечатался. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2013, 10:41 |
|
Проверка заполнения поля
|
|||
---|---|---|---|
#18+
Программист 1с, Все заработало. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48.
Спасибо большое! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2013, 11:22 |
|
|
start [/forum/topic.php?desktop=1&fid=28&tid=1519718]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
82ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 325ms |
total: | 515ms |
0 / 0 |